(0) Obligation:
JBC Problem based on JBC Program:
Manifest-Version: 1.0
Created-By: 1.6.0_20 (Apple Inc.)
Main-Class: BubbleSortR
class BubbleSortR {
public static void main(String[] args) {
Random.args = args;
int dim = Random.random()*Random.random();
int[] t = new int[dim] ;
for(int i = 0; i < t.length; i++)
t[i] = Random.random();
sort(t);
}
public static void sort(int[] x) {
int n = x.length;
for (int pass=1; pass < n; pass++) // count how many times
// This next loop becomes shorter and shorter
aux(0,n-pass,x);
//for (int i = 0; i < x.length; i++)
// System.out.print(x[i]+ " ");
}
private static void aux(int min, int max, int[] x) {
if (min >= max) return;
int i = min;
if (x[i] > x[i+1]) {
// exchange elements
int temp = x[i]; x[i] = x[i+1]; x[i+1] = temp;
}
aux(min+1,max,x);
}
}
public class Random {
static String[] args;
static int index = 0;
public static int random() {
if (index >= args.length)
return 0;
String string = args[index];
index++;
return string.length();
}
}
(1) JBC2FIG (SOUND transformation)
Constructed FIGraph.
(2) Obligation:
FIGraph based on JBC Program:
BubbleSortR.main([Ljava/lang/String;)V: Graph of 414 nodes with 2 SCCs.
BubbleSortR.aux(II[I)V: Graph of 217 nodes with 0 SCCs.
(3) FIGtoITRSProof (SOUND transformation)
Transformed FIGraph SCCs to IDPs. Logs:
Log for SCC 0: Generated 51 rules for P and 165 rules for R.
Combined rules. Obtained 4 rules for P and 9 rules for R.
Filtered ground terms:
4199_0_aux_Load(x1, x2, x3, x4, x5) → 4199_0_aux_Load(x2, x3, x4, x5)
Cond_4854_0_aux_LE(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_4854_0_aux_LE(x1, x3, x4, x5, x6, x7, x8)
4854_0_aux_LE(x1, x2, x3, x4, x5, x6, x7) → 4854_0_aux_LE(x2, x3, x4, x5, x6, x7)
Cond_4853_0_aux_LE(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_4853_0_aux_LE(x1, x3, x4, x5, x6, x7, x8)
4853_0_aux_LE(x1, x2, x3, x4, x5, x6, x7) → 4853_0_aux_LE(x2, x3, x4, x5, x6, x7)
Cond_4199_0_aux_Load1(x1, x2, x3, x4, x5, x6) → Cond_4199_0_aux_Load1(x1, x3, x4, x5, x6)
Cond_4199_0_aux_Load(x1, x2, x3, x4, x5, x6) → Cond_4199_0_aux_Load(x1, x3, x4, x5, x6)
5778_0_aux_InvokeMethod(x1, x2, x3, x4) → 5778_0_aux_InvokeMethod(x2, x3, x4)
6211_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7) → 6211_0_aux_ArrayAccess(x2, x3, x4, x5, x6, x7)
6115_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7, x8, x9) → 6115_0_aux_ArrayAccess(x2, x3, x4, x5, x6, x7, x8, x9)
6068_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) → 6068_0_aux_ArrayAccess(x2, x3, x4, x5, x6, x7, x8, x9, x10)
5775_0_aux_Return(x1) → 5775_0_aux_Return
5579_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7) → 5579_0_aux_ArrayAccess(x2, x3, x4, x5, x6, x7)
5338_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7, x8) → 5338_0_aux_ArrayAccess(x2, x3, x4, x5, x6, x7, x8)
5100_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7) → 5100_0_aux_ArrayAccess(x2, x3, x4, x5, x6, x7)
4295_0_aux_Return(x1, x2, x3, x4) → 4295_0_aux_Return(x2, x3, x4)
Filtered duplicate args:
4199_0_aux_Load(x1, x2, x3, x4) → 4199_0_aux_Load(x2, x3, x4)
Cond_4854_0_aux_LE(x1, x2, x3, x4, x5, x6, x7) → Cond_4854_0_aux_LE(x1, x3, x4, x5, x6, x7)
4854_0_aux_LE(x1, x2, x3, x4, x5, x6) → 4854_0_aux_LE(x2, x3, x4, x5, x6)
Cond_4853_0_aux_LE(x1, x2, x3, x4, x5, x6, x7) → Cond_4853_0_aux_LE(x1, x3, x4, x5, x6, x7)
4853_0_aux_LE(x1, x2, x3, x4, x5, x6) → 4853_0_aux_LE(x2, x3, x4, x5, x6)
Cond_4199_0_aux_Load1(x1, x2, x3, x4, x5) → Cond_4199_0_aux_Load1(x1, x3, x4, x5)
Cond_4199_0_aux_Load(x1, x2, x3, x4, x5) → Cond_4199_0_aux_Load(x1, x3, x4, x5)
6211_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6) → 6211_0_aux_ArrayAccess(x1, x2, x4, x5, x6)
6115_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7, x8) → 6115_0_aux_ArrayAccess(x2, x5, x6, x7, x8)
6068_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7, x8, x9) → 6068_0_aux_ArrayAccess(x2, x5, x7, x8, x9)
5579_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6) → 5579_0_aux_ArrayAccess(x2, x5, x6)
5338_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7) → 5338_0_aux_ArrayAccess(x2, x4, x5, x6, x7)
5100_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6) → 5100_0_aux_ArrayAccess(x2, x5, x6)
Filtered unneeded arguments:
Cond_4853_0_aux_LE(x1, x2, x3, x4, x5, x6) → Cond_4853_0_aux_LE(x1, x2, x3, x4)
Cond_4854_0_aux_LE(x1, x2, x3, x4, x5, x6) → Cond_4854_0_aux_LE(x1, x2, x3, x4)
Combined rules. Obtained 4 rules for P and 9 rules for R.
Finished conversion. Obtained 4 rules for P and 9 rules for R. System has predefined symbols.
Log for SCC 1: Generated 18 rules for P and 242 rules for R.
Combined rules. Obtained 2 rules for P and 28 rules for R.
Filtered ground terms:
6187_0_aux_Load(x1, x2, x3, x4) → 6187_0_aux_Load(x3, x4)
6187_1_sort_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → 6187_1_sort_InvokeMethod(x1, x2, x3, x4, x6, x7)
5775_0_aux_Return(x1) → 5775_0_aux_Return
4295_0_aux_Return(x1, x2, x3, x4) → 4295_0_aux_Return(x2, x3, x4)
5778_0_aux_InvokeMethod(x1, x2, x3, x4) → 5778_0_aux_InvokeMethod(x2, x3, x4)
6211_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7) → 6211_0_aux_ArrayAccess(x2, x3, x4, x5, x6, x7)
6115_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7, x8, x9) → 6115_0_aux_ArrayAccess(x2, x3, x4, x5, x6, x7, x8, x9)
6068_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) → 6068_0_aux_ArrayAccess(x2, x3, x4, x5, x6, x7, x8, x9, x10)
5579_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7) → 5579_0_aux_ArrayAccess(x2, x3, x4, x5, x6, x7)
5338_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7, x8) → 5338_0_aux_ArrayAccess(x2, x3, x4, x5, x6, x7, x8)
5100_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7) → 5100_0_aux_ArrayAccess(x2, x3, x4, x5, x6, x7)
4204_0_aux_LT(x1, x2, x3, x4, x5, x6) → 4204_0_aux_LT(x2, x3, x4, x5, x6)
Cond_4854_0_aux_LE2(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_4854_0_aux_LE2(x1, x3, x4, x5, x6, x7, x8)
4854_0_aux_LE(x1, x2, x3, x4, x5, x6, x7) → 4854_0_aux_LE(x2, x3, x4, x5, x6, x7)
Cond_4853_0_aux_LE(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_4853_0_aux_LE(x1, x3, x4, x5, x6, x7, x8)
4853_0_aux_LE(x1, x2, x3, x4, x5, x6, x7) → 4853_0_aux_LE(x2, x3, x4, x5, x6, x7)
Cond_4854_0_aux_LE1(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_4854_0_aux_LE1(x1, x3, x4, x5, x6, x7, x8)
Cond_4854_0_aux_LE(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_4854_0_aux_LE(x1, x3, x4, x5, x6, x7, x8)
Cond_4204_0_aux_LT4(x1, x2, x3, x4, x5, x6, x7) → Cond_4204_0_aux_LT4(x1, x3, x4, x5, x6, x7)
Cond_4204_0_aux_LT3(x1, x2, x3, x4, x5, x6, x7) → Cond_4204_0_aux_LT3(x1, x3, x4, x5, x6, x7)
Cond_4204_0_aux_LT2(x1, x2, x3, x4, x5, x6, x7) → Cond_4204_0_aux_LT2(x1, x3, x4, x5, x6, x7)
Cond_4204_0_aux_LT1(x1, x2, x3, x4, x5, x6, x7) → Cond_4204_0_aux_LT1(x1, x3, x4, x5, x6, x7)
Cond_4204_0_aux_LT(x1, x2, x3, x4, x5, x6, x7) → Cond_4204_0_aux_LT(x1, x3, x4, x5, x6, x7)
6255_0_main_InvokeMethod(x1, x2) → 6255_0_main_InvokeMethod(x2)
Filtered duplicate args:
6187_1_sort_InvokeMethod(x1, x2, x3, x4, x5, x6) → 6187_1_sort_InvokeMethod(x1, x3, x4, x5, x6)
6211_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6) → 6211_0_aux_ArrayAccess(x1, x2, x4, x5, x6)
6115_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7, x8) → 6115_0_aux_ArrayAccess(x2, x5, x6, x7, x8)
6068_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7, x8, x9) → 6068_0_aux_ArrayAccess(x2, x5, x7, x8, x9)
5579_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6) → 5579_0_aux_ArrayAccess(x2, x5, x6)
5338_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6, x7) → 5338_0_aux_ArrayAccess(x2, x4, x5, x6, x7)
5100_0_aux_ArrayAccess(x1, x2, x3, x4, x5, x6) → 5100_0_aux_ArrayAccess(x2, x5, x6)
4204_0_aux_LT(x1, x2, x3, x4, x5) → 4204_0_aux_LT(x3, x4, x5)
Cond_4854_0_aux_LE2(x1, x2, x3, x4, x5, x6, x7) → Cond_4854_0_aux_LE2(x1, x3, x4, x5, x6, x7)
4854_0_aux_LE(x1, x2, x3, x4, x5, x6) → 4854_0_aux_LE(x2, x3, x4, x5, x6)
Cond_4853_0_aux_LE(x1, x2, x3, x4, x5, x6, x7) → Cond_4853_0_aux_LE(x1, x3, x4, x5, x6, x7)
4853_0_aux_LE(x1, x2, x3, x4, x5, x6) → 4853_0_aux_LE(x2, x3, x4, x5, x6)
Cond_4854_0_aux_LE1(x1, x2, x3, x4, x5, x6, x7) → Cond_4854_0_aux_LE1(x1, x3, x4, x5, x6, x7)
Cond_4854_0_aux_LE(x1, x2, x3, x4, x5, x6, x7) → Cond_4854_0_aux_LE(x1, x3, x4, x5, x6, x7)
Cond_4204_0_aux_LT4(x1, x2, x3, x4, x5, x6) → Cond_4204_0_aux_LT4(x1, x4, x5, x6)
Cond_4204_0_aux_LT3(x1, x2, x3, x4, x5, x6) → Cond_4204_0_aux_LT3(x1, x4, x5, x6)
Cond_4204_0_aux_LT2(x1, x2, x3, x4, x5, x6) → Cond_4204_0_aux_LT2(x1, x4, x5, x6)
Cond_4204_0_aux_LT1(x1, x2, x3, x4, x5, x6) → Cond_4204_0_aux_LT1(x1, x4, x5, x6)
Cond_4204_0_aux_LT(x1, x2, x3, x4, x5, x6) → Cond_4204_0_aux_LT(x1, x4, x5, x6)
Filtered unneeded arguments:
Cond_4204_0_aux_LT(x1, x2, x3, x4) → Cond_4204_0_aux_LT(x1, x2, x4)
Cond_4204_0_aux_LT1(x1, x2, x3, x4) → Cond_4204_0_aux_LT1(x1, x2)
Cond_4204_0_aux_LT4(x1, x2, x3, x4) → Cond_4204_0_aux_LT4(x1, x2)
Cond_4854_0_aux_LE(x1, x2, x3, x4, x5, x6) → Cond_4854_0_aux_LE(x1, x3)
Cond_4854_0_aux_LE1(x1, x2, x3, x4, x5, x6) → Cond_4854_0_aux_LE1(x1, x3)
Cond_4853_0_aux_LE(x1, x2, x3, x4, x5, x6) → Cond_4853_0_aux_LE(x1, x2, x3, x4)
Cond_4854_0_aux_LE2(x1, x2, x3, x4, x5, x6) → Cond_4854_0_aux_LE2(x1, x2, x3, x4)
Combined rules. Obtained 2 rules for P and 26 rules for R.
Finished conversion. Obtained 2 rules for P and 26 rules for R. System has predefined symbols.
Log for SCC 2: Generated 45 rules for P and 438 rules for R.
Combined rules. Obtained 6 rules for P and 0 rules for R.
Filtered ground terms:
2614_0_main_Load(x1, x2, x3, x4) → 2614_0_main_Load(x2, x3, x4)
2680_0_random_LT(x1, x2, x3) → 2680_0_random_LT(x2, x3)
2777_0_random_IntArithmetic(x1, x2, x3, x4) → 2777_0_random_IntArithmetic(x2, x3)
2720_0_random_ArrayAccess(x1, x2, x3) → 2720_0_random_ArrayAccess(x2, x3)
2678_0_random_LT(x1, x2, x3) → 2678_0_random_LT(x2, x3)
Cond_2614_0_main_Load1(x1, x2, x3, x4, x5) → Cond_2614_0_main_Load1(x1, x3, x4, x5)
Cond_2614_0_main_Load(x1, x2, x3, x4, x5) → Cond_2614_0_main_Load(x1, x3, x4, x5)
Filtered duplicate args:
2614_0_main_Load(x1, x2, x3) → 2614_0_main_Load(x1, x3)
Cond_2680_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_2680_1_main_InvokeMethod(x1, x2, x5, x6)
2680_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 2680_1_main_InvokeMethod(x1, x4, x5)
Cond_2777_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_2777_1_main_InvokeMethod(x1, x2, x5, x6)
2777_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 2777_1_main_InvokeMethod(x1, x4, x5)
Cond_2720_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_2720_1_main_InvokeMethod(x1, x2, x5, x6)
2720_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 2720_1_main_InvokeMethod(x1, x4, x5)
Cond_2678_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → Cond_2678_1_main_InvokeMethod(x1, x2, x5, x6)
2678_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 2678_1_main_InvokeMethod(x1, x4, x5)
Cond_2614_0_main_Load1(x1, x2, x3, x4) → Cond_2614_0_main_Load1(x1, x2, x4)
Cond_2614_0_main_Load(x1, x2, x3, x4) → Cond_2614_0_main_Load(x1, x2, x4)
Filtered all free variables:
2678_1_main_InvokeMethod(x1, x2, x3) → 2678_1_main_InvokeMethod(x2, x3)
2680_1_main_InvokeMethod(x1, x2, x3) → 2680_1_main_InvokeMethod(x2, x3)
Cond_2678_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_2678_1_main_InvokeMethod(x1, x3, x4)
2720_1_main_InvokeMethod(x1, x2, x3) → 2720_1_main_InvokeMethod(x2, x3)
Cond_2720_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_2720_1_main_InvokeMethod(x1, x3, x4)
2777_1_main_InvokeMethod(x1, x2, x3) → 2777_1_main_InvokeMethod(x2, x3)
Cond_2777_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_2777_1_main_InvokeMethod(x1, x3, x4)
Cond_2680_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_2680_1_main_InvokeMethod(x1, x3, x4)
Combined rules. Obtained 1 rules for P and 0 rules for R.
Finished conversion. Obtained 1 rules for P and 0 rules for R. System has predefined symbols.
(4) Complex Obligation (AND)
(5) Obligation:
IDP problem:
The following function symbols are pre-defined:
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
| ~ | Bwxor: (Integer, Integer) -> Integer |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
The following domains are used:
Boolean, Integer
The ITRS R consists of the following rules:
5704_1_aux_InvokeMethod(
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5775_0_aux_Return5704_1_aux_InvokeMethod(
5100_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5338_0_aux_ArrayAccess(
x1,
x0,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5579_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5775_0_aux_Return,
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5775_0_aux_Return5704_1_aux_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x1,
java.lang.Object(
ARRAY(
x5,
x6))) →
5778_0_aux_InvokeMethod(
x4,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6068_0_aux_ArrayAccess(
x1,
x4,
x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6115_0_aux_ArrayAccess(
x1,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6211_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x6,
x7))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
The integer pair graph contains the following rules and edges:
(0):
4199_0_AUX_LOAD(
x1[0],
java.lang.Object(
ARRAY(
x2[0],
x3[0])),
x0[0]) →
COND_4199_0_AUX_LOAD(
x2[0] > x0[0] && x2[0] > x0[0] + 1 && x1[0] > x0[0] && x0[0] >= 0 && 1 <= x0[0] + 1,
x1[0],
java.lang.Object(
ARRAY(
x2[0],
x3[0])),
x0[0])
(1):
COND_4199_0_AUX_LOAD(
TRUE,
x1[1],
java.lang.Object(
ARRAY(
x2[1],
x3[1])),
x0[1]) →
4853_0_AUX_LE(
x1[1],
java.lang.Object(
ARRAY(
x2[1],
x3[1])),
x0[1],
x4[1],
x5[1])
(2):
4199_0_AUX_LOAD(
x1[2],
java.lang.Object(
ARRAY(
x2[2],
x3[2])),
x0[2]) →
COND_4199_0_AUX_LOAD1(
x2[2] > x0[2] && x2[2] > x0[2] + 1 && x1[2] > x0[2] && x0[2] >= 0 && 1 <= x0[2] + 1,
x1[2],
java.lang.Object(
ARRAY(
x2[2],
x3[2])),
x0[2])
(3):
COND_4199_0_AUX_LOAD1(
TRUE,
x1[3],
java.lang.Object(
ARRAY(
x2[3],
x3[3])),
x0[3]) →
4854_0_AUX_LE(
x1[3],
java.lang.Object(
ARRAY(
x2[3],
x3[3])),
x0[3],
x4[3],
x5[3])
(4):
4853_0_AUX_LE(
x1[4],
java.lang.Object(
ARRAY(
x2[4],
x3[4])),
x0[4],
x4[4],
x5[4]) →
COND_4853_0_AUX_LE(
x5[4] >= x4[4] && x0[4] >= 0,
x1[4],
java.lang.Object(
ARRAY(
x2[4],
x3[4])),
x0[4],
x4[4],
x5[4])
(5):
COND_4853_0_AUX_LE(
TRUE,
x1[5],
java.lang.Object(
ARRAY(
x2[5],
x3[5])),
x0[5],
x4[5],
x5[5]) →
4199_0_AUX_LOAD(
x1[5],
java.lang.Object(
ARRAY(
x2[5],
x3[5])),
x0[5] + 1)
(6):
4854_0_AUX_LE(
x1[6],
java.lang.Object(
ARRAY(
x2[6],
x3[6])),
x0[6],
x4[6],
x5[6]) →
COND_4853_0_AUX_LE(
x5[6] < x4[6] && x2[6] > x0[6] && x2[6] > x0[6] + 1 && x0[6] >= 0 && 1 <= x0[6] + 1,
x1[6],
java.lang.Object(
ARRAY(
x2[6],
x3[6])),
x0[6],
x4[6],
x5[6])
(0) -> (1), if ((x2[0] > x0[0] && x2[0] > x0[0] + 1 && x1[0] > x0[0] && x0[0] >= 0 && 1 <= x0[0] + 1 →* TRUE)∧(x1[0] →* x1[1])∧(java.lang.Object(ARRAY(x2[0], x3[0])) →* java.lang.Object(ARRAY(x2[1], x3[1])))∧(x0[0] →* x0[1]))
(1) -> (4), if ((x1[1] →* x1[4])∧(java.lang.Object(ARRAY(x2[1], x3[1])) →* java.lang.Object(ARRAY(x2[4], x3[4])))∧(x0[1] →* x0[4])∧(x4[1] →* x4[4])∧(x5[1] →* x5[4]))
(2) -> (3), if ((x2[2] > x0[2] && x2[2] > x0[2] + 1 && x1[2] > x0[2] && x0[2] >= 0 && 1 <= x0[2] + 1 →* TRUE)∧(x1[2] →* x1[3])∧(java.lang.Object(ARRAY(x2[2], x3[2])) →* java.lang.Object(ARRAY(x2[3], x3[3])))∧(x0[2] →* x0[3]))
(3) -> (6), if ((x1[3] →* x1[6])∧(java.lang.Object(ARRAY(x2[3], x3[3])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x0[3] →* x0[6])∧(x4[3] →* x4[6])∧(x5[3] →* x5[6]))
(4) -> (5), if ((x5[4] >= x4[4] && x0[4] >= 0 →* TRUE)∧(x1[4] →* x1[5])∧(java.lang.Object(ARRAY(x2[4], x3[4])) →* java.lang.Object(ARRAY(x2[5], x3[5])))∧(x0[4] →* x0[5])∧(x4[4] →* x4[5])∧(x5[4] →* x5[5]))
(5) -> (0), if ((x1[5] →* x1[0])∧(java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x2[0], x3[0])))∧(x0[5] + 1 →* x0[0]))
(5) -> (2), if ((x1[5] →* x1[2])∧(java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x2[2], x3[2])))∧(x0[5] + 1 →* x0[2]))
(6) -> (5), if ((x5[6] < x4[6] && x2[6] > x0[6] && x2[6] > x0[6] + 1 && x0[6] >= 0 && 1 <= x0[6] + 1 →* TRUE)∧(x1[6] →* x1[5])∧(java.lang.Object(ARRAY(x2[6], x3[6])) →* java.lang.Object(ARRAY(x2[5], x3[5])))∧(x0[6] →* x0[5])∧(x4[6] →* x4[5])∧(x5[6] →* x5[5]))
The set Q consists of the following terms:
5704_1_aux_InvokeMethod(
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5100_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3),
x3,
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
5704_1_aux_InvokeMethod(
5338_0_aux_ArrayAccess(
x0,
x1,
x2,
java.lang.Object(
ARRAY(
x3,
x4)),
x5),
x1,
x0,
java.lang.Object(
ARRAY(
x3,
x4)))
5704_1_aux_InvokeMethod(
5579_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3),
x3,
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
5704_1_aux_InvokeMethod(
5775_0_aux_Return,
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x1,
java.lang.Object(
ARRAY(
x5,
x6)))
5704_1_aux_InvokeMethod(
6068_0_aux_ArrayAccess(
x0,
x1,
x2,
java.lang.Object(
ARRAY(
x3,
x4)),
x5),
x2,
x0,
java.lang.Object(
ARRAY(
x3,
x4)))
5704_1_aux_InvokeMethod(
6115_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x4,
x0,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6211_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x6,
x7)))
(6) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that
final constraints are written in
bold face.
For Pair
4199_0_AUX_LOAD(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0) →
COND_4199_0_AUX_LOAD(
&&(
&&(
&&(
&&(
>(
x2,
x0),
>(
x2,
+(
x0,
1))),
>(
x1,
x0)),
>=(
x0,
0)),
<=(
1,
+(
x0,
1))),
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0) the following chains were created:
- We consider the chain 4199_0_AUX_LOAD(x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0]) → COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0]), COND_4199_0_AUX_LOAD(TRUE, x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1]) → 4853_0_AUX_LE(x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1], x4[1], x5[1]) which results in the following constraint:
(1) (&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1)))=TRUE∧x1[0]=x1[1]∧java.lang.Object(ARRAY(x2[0], x3[0]))=java.lang.Object(ARRAY(x2[1], x3[1]))∧x0[0]=x0[1] ⇒ 4199_0_AUX_LOAD(x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])≥NonInfC∧4199_0_AUX_LOAD(x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])≥COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])∧(UIncreasing(COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])), ≥))
We simplified constraint (1) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:
(2) (<=(1, +(x0[0], 1))=TRUE∧>=(x0[0], 0)=TRUE∧>(x1[0], x0[0])=TRUE∧>(x2[0], x0[0])=TRUE∧>(x2[0], +(x0[0], 1))=TRUE ⇒ 4199_0_AUX_LOAD(x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])≥NonInfC∧4199_0_AUX_LOAD(x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])≥COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])∧(UIncreasing(COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])), ≥))
We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(3) (x0[0] ≥ 0∧x0[0] ≥ 0∧x1[0] + [-1] + [-1]x0[0] ≥ 0∧x2[0] + [-1] + [-1]x0[0] ≥ 0∧x2[0] + [-2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])), ≥)∧[(-1)Bound*bni_32] + [(-1)bni_32]x0[0] + [bni_32]x2[0] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0)
We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(4) (x0[0] ≥ 0∧x0[0] ≥ 0∧x1[0] + [-1] + [-1]x0[0] ≥ 0∧x2[0] + [-1] + [-1]x0[0] ≥ 0∧x2[0] + [-2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])), ≥)∧[(-1)Bound*bni_32] + [(-1)bni_32]x0[0] + [bni_32]x2[0] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0)
We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(5) (x0[0] ≥ 0∧x0[0] ≥ 0∧x1[0] + [-1] + [-1]x0[0] ≥ 0∧x2[0] + [-1] + [-1]x0[0] ≥ 0∧x2[0] + [-2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])), ≥)∧[(-1)Bound*bni_32] + [(-1)bni_32]x0[0] + [bni_32]x2[0] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0)
We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(6) (x0[0] ≥ 0∧x0[0] ≥ 0∧x1[0] + [-1] + [-1]x0[0] ≥ 0∧x2[0] + [-1] + [-1]x0[0] ≥ 0∧x2[0] + [-2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])), ≥)∧0 = 0∧[(-1)Bound*bni_32] + [(-1)bni_32]x0[0] + [bni_32]x2[0] + [(2)bni_32]x1[0] ≥ 0∧0 = 0∧[(-1)bso_33] ≥ 0)
We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
(7) (x0[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0∧x2[0] + [-1] + [-1]x0[0] ≥ 0∧x2[0] + [-2] + [-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])), ≥)∧0 = 0∧[(-1)Bound*bni_32 + (2)bni_32] + [bni_32]x0[0] + [bni_32]x2[0] + [(2)bni_32]x1[0] ≥ 0∧0 = 0∧[(-1)bso_33] ≥ 0)
We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
(8) (x0[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0∧x2[0] ≥ 0∧[-1] + x2[0] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])), ≥)∧0 = 0∧[(-1)Bound*bni_32 + (3)bni_32] + [(2)bni_32]x0[0] + [bni_32]x2[0] + [(2)bni_32]x1[0] ≥ 0∧0 = 0∧[(-1)bso_33] ≥ 0)
We simplified constraint (8) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
(9) (x0[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0∧[1] + x2[0] ≥ 0∧x2[0] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])), ≥)∧0 = 0∧[(-1)Bound*bni_32 + (4)bni_32] + [(2)bni_32]x0[0] + [bni_32]x2[0] + [(2)bni_32]x1[0] ≥ 0∧0 = 0∧[(-1)bso_33] ≥ 0)
For Pair
COND_4199_0_AUX_LOAD(
TRUE,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0) →
4853_0_AUX_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) the following chains were created:
- We consider the chain COND_4199_0_AUX_LOAD(TRUE, x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1]) → 4853_0_AUX_LE(x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1], x4[1], x5[1]) which results in the following constraint:
(10) (COND_4199_0_AUX_LOAD(TRUE, x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1])≥NonInfC∧COND_4199_0_AUX_LOAD(TRUE, x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1])≥4853_0_AUX_LE(x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1], x4[1], x5[1])∧(UIncreasing(4853_0_AUX_LE(x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1], x4[1], x5[1])), ≥))
We simplified constraint (10) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(11) ((UIncreasing(4853_0_AUX_LE(x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1], x4[1], x5[1])), ≥)∧[(-1)bso_35] ≥ 0)
We simplified constraint (11) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(12) ((UIncreasing(4853_0_AUX_LE(x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1], x4[1], x5[1])), ≥)∧[(-1)bso_35] ≥ 0)
We simplified constraint (12) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(13) ((UIncreasing(4853_0_AUX_LE(x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1], x4[1], x5[1])), ≥)∧[(-1)bso_35] ≥ 0)
We simplified constraint (13) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(14) ((UIncreasing(4853_0_AUX_LE(x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1], x4[1], x5[1])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)
For Pair
4199_0_AUX_LOAD(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0) →
COND_4199_0_AUX_LOAD1(
&&(
&&(
&&(
&&(
>(
x2,
x0),
>(
x2,
+(
x0,
1))),
>(
x1,
x0)),
>=(
x0,
0)),
<=(
1,
+(
x0,
1))),
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0) the following chains were created:
- We consider the chain 4199_0_AUX_LOAD(x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2]) → COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2]), COND_4199_0_AUX_LOAD1(TRUE, x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3]) → 4854_0_AUX_LE(x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3], x4[3], x5[3]) which results in the following constraint:
(15) (&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1)))=TRUE∧x1[2]=x1[3]∧java.lang.Object(ARRAY(x2[2], x3[2]))=java.lang.Object(ARRAY(x2[3], x3[3]))∧x0[2]=x0[3] ⇒ 4199_0_AUX_LOAD(x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])≥NonInfC∧4199_0_AUX_LOAD(x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])≥COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])∧(UIncreasing(COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])), ≥))
We simplified constraint (15) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:
(16) (<=(1, +(x0[2], 1))=TRUE∧>=(x0[2], 0)=TRUE∧>(x1[2], x0[2])=TRUE∧>(x2[2], x0[2])=TRUE∧>(x2[2], +(x0[2], 1))=TRUE ⇒ 4199_0_AUX_LOAD(x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])≥NonInfC∧4199_0_AUX_LOAD(x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])≥COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])∧(UIncreasing(COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])), ≥))
We simplified constraint (16) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(17) (x0[2] ≥ 0∧x0[2] ≥ 0∧x1[2] + [-1] + [-1]x0[2] ≥ 0∧x2[2] + [-1] + [-1]x0[2] ≥ 0∧x2[2] + [-2] + [-1]x0[2] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])), ≥)∧[(-1)Bound*bni_36] + [(-1)bni_36]x0[2] + [bni_36]x2[2] + [(2)bni_36]x1[2] ≥ 0∧[(-1)bso_37] ≥ 0)
We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(18) (x0[2] ≥ 0∧x0[2] ≥ 0∧x1[2] + [-1] + [-1]x0[2] ≥ 0∧x2[2] + [-1] + [-1]x0[2] ≥ 0∧x2[2] + [-2] + [-1]x0[2] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])), ≥)∧[(-1)Bound*bni_36] + [(-1)bni_36]x0[2] + [bni_36]x2[2] + [(2)bni_36]x1[2] ≥ 0∧[(-1)bso_37] ≥ 0)
We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(19) (x0[2] ≥ 0∧x0[2] ≥ 0∧x1[2] + [-1] + [-1]x0[2] ≥ 0∧x2[2] + [-1] + [-1]x0[2] ≥ 0∧x2[2] + [-2] + [-1]x0[2] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])), ≥)∧[(-1)Bound*bni_36] + [(-1)bni_36]x0[2] + [bni_36]x2[2] + [(2)bni_36]x1[2] ≥ 0∧[(-1)bso_37] ≥ 0)
We simplified constraint (19) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(20) (x0[2] ≥ 0∧x0[2] ≥ 0∧x1[2] + [-1] + [-1]x0[2] ≥ 0∧x2[2] + [-1] + [-1]x0[2] ≥ 0∧x2[2] + [-2] + [-1]x0[2] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])), ≥)∧0 = 0∧[(-1)Bound*bni_36] + [(-1)bni_36]x0[2] + [bni_36]x2[2] + [(2)bni_36]x1[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)
We simplified constraint (20) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
(21) (x0[2] ≥ 0∧x0[2] ≥ 0∧x1[2] ≥ 0∧x2[2] + [-1] + [-1]x0[2] ≥ 0∧x2[2] + [-2] + [-1]x0[2] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])), ≥)∧0 = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]x0[2] + [bni_36]x2[2] + [(2)bni_36]x1[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)
We simplified constraint (21) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
(22) (x0[2] ≥ 0∧x0[2] ≥ 0∧x1[2] ≥ 0∧x2[2] ≥ 0∧[-1] + x2[2] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])), ≥)∧0 = 0∧[(-1)Bound*bni_36 + (3)bni_36] + [(2)bni_36]x0[2] + [bni_36]x2[2] + [(2)bni_36]x1[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)
We simplified constraint (22) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
(23) (x0[2] ≥ 0∧x0[2] ≥ 0∧x1[2] ≥ 0∧[1] + x2[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])), ≥)∧0 = 0∧[(-1)Bound*bni_36 + (4)bni_36] + [(2)bni_36]x0[2] + [bni_36]x2[2] + [(2)bni_36]x1[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)
For Pair
COND_4199_0_AUX_LOAD1(
TRUE,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0) →
4854_0_AUX_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) the following chains were created:
- We consider the chain COND_4199_0_AUX_LOAD1(TRUE, x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3]) → 4854_0_AUX_LE(x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3], x4[3], x5[3]) which results in the following constraint:
(24) (COND_4199_0_AUX_LOAD1(TRUE, x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3])≥NonInfC∧COND_4199_0_AUX_LOAD1(TRUE, x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3])≥4854_0_AUX_LE(x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3], x4[3], x5[3])∧(UIncreasing(4854_0_AUX_LE(x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3], x4[3], x5[3])), ≥))
We simplified constraint (24) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(25) ((UIncreasing(4854_0_AUX_LE(x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3], x4[3], x5[3])), ≥)∧[(-1)bso_39] ≥ 0)
We simplified constraint (25) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(26) ((UIncreasing(4854_0_AUX_LE(x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3], x4[3], x5[3])), ≥)∧[(-1)bso_39] ≥ 0)
We simplified constraint (26) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(27) ((UIncreasing(4854_0_AUX_LE(x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3], x4[3], x5[3])), ≥)∧[(-1)bso_39] ≥ 0)
We simplified constraint (27) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(28) ((UIncreasing(4854_0_AUX_LE(x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3], x4[3], x5[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)
For Pair
4853_0_AUX_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
COND_4853_0_AUX_LE(
&&(
>=(
x5,
x4),
>=(
x0,
0)),
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) the following chains were created:
- We consider the chain 4853_0_AUX_LE(x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4]) → COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4]), COND_4853_0_AUX_LE(TRUE, x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), x0[5], x4[5], x5[5]) → 4199_0_AUX_LOAD(x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), +(x0[5], 1)) which results in the following constraint:
(29) (&&(>=(x5[4], x4[4]), >=(x0[4], 0))=TRUE∧x1[4]=x1[5]∧java.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x0[4]=x0[5]∧x4[4]=x4[5]∧x5[4]=x5[5] ⇒ 4853_0_AUX_LE(x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])≥NonInfC∧4853_0_AUX_LE(x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])≥COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])∧(UIncreasing(COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])), ≥))
We simplified constraint (29) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:
(30) (>=(x5[4], x4[4])=TRUE∧>=(x0[4], 0)=TRUE ⇒ 4853_0_AUX_LE(x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])≥NonInfC∧4853_0_AUX_LE(x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])≥COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])∧(UIncreasing(COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])), ≥))
We simplified constraint (30) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(31) (x5[4] + [-1]x4[4] ≥ 0∧x0[4] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])), ≥)∧[(-1)Bound*bni_40] + [(-1)bni_40]x0[4] + [bni_40]x2[4] + [(2)bni_40]x1[4] ≥ 0∧[(-1)bso_41] ≥ 0)
We simplified constraint (31) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(32) (x5[4] + [-1]x4[4] ≥ 0∧x0[4] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])), ≥)∧[(-1)Bound*bni_40] + [(-1)bni_40]x0[4] + [bni_40]x2[4] + [(2)bni_40]x1[4] ≥ 0∧[(-1)bso_41] ≥ 0)
We simplified constraint (32) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(33) (x5[4] + [-1]x4[4] ≥ 0∧x0[4] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])), ≥)∧[(-1)Bound*bni_40] + [(-1)bni_40]x0[4] + [bni_40]x2[4] + [(2)bni_40]x1[4] ≥ 0∧[(-1)bso_41] ≥ 0)
We simplified constraint (33) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(34) (x5[4] + [-1]x4[4] ≥ 0∧x0[4] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])), ≥)∧0 = 0∧[bni_40] = 0∧[(2)bni_40] = 0∧[(-1)Bound*bni_40] + [(-1)bni_40]x0[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)
We simplified constraint (34) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
(35) (x5[4] ≥ 0∧x0[4] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])), ≥)∧0 = 0∧[bni_40] = 0∧[(2)bni_40] = 0∧[(-1)Bound*bni_40] + [(-1)bni_40]x0[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)
We simplified constraint (35) using rule (IDP_SMT_SPLIT) which results in the following new constraints:
(36) (x5[4] ≥ 0∧x0[4] ≥ 0∧x4[4] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])), ≥)∧0 = 0∧[bni_40] = 0∧[(2)bni_40] = 0∧[(-1)Bound*bni_40] + [(-1)bni_40]x0[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)
(37) (x5[4] ≥ 0∧x0[4] ≥ 0∧x4[4] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])), ≥)∧0 = 0∧[bni_40] = 0∧[(2)bni_40] = 0∧[(-1)Bound*bni_40] + [(-1)bni_40]x0[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)
For Pair
COND_4853_0_AUX_LE(
TRUE,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
4199_0_AUX_LOAD(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
+(
x0,
1)) the following chains were created:
- We consider the chain COND_4853_0_AUX_LE(TRUE, x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), x0[5], x4[5], x5[5]) → 4199_0_AUX_LOAD(x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), +(x0[5], 1)) which results in the following constraint:
(38) (COND_4853_0_AUX_LE(TRUE, x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), x0[5], x4[5], x5[5])≥NonInfC∧COND_4853_0_AUX_LE(TRUE, x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), x0[5], x4[5], x5[5])≥4199_0_AUX_LOAD(x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), +(x0[5], 1))∧(UIncreasing(4199_0_AUX_LOAD(x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), +(x0[5], 1))), ≥))
We simplified constraint (38) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(39) ((UIncreasing(4199_0_AUX_LOAD(x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), +(x0[5], 1))), ≥)∧[1 + (-1)bso_43] ≥ 0)
We simplified constraint (39) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(40) ((UIncreasing(4199_0_AUX_LOAD(x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), +(x0[5], 1))), ≥)∧[1 + (-1)bso_43] ≥ 0)
We simplified constraint (40) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(41) ((UIncreasing(4199_0_AUX_LOAD(x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), +(x0[5], 1))), ≥)∧[1 + (-1)bso_43] ≥ 0)
We simplified constraint (41) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(42) ((UIncreasing(4199_0_AUX_LOAD(x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), +(x0[5], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_43] ≥ 0)
For Pair
4854_0_AUX_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
COND_4853_0_AUX_LE(
&&(
&&(
&&(
&&(
<(
x5,
x4),
>(
x2,
x0)),
>(
x2,
+(
x0,
1))),
>=(
x0,
0)),
<=(
1,
+(
x0,
1))),
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) the following chains were created:
- We consider the chain 4854_0_AUX_LE(x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6]) → COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6]), COND_4853_0_AUX_LE(TRUE, x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), x0[5], x4[5], x5[5]) → 4199_0_AUX_LOAD(x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), +(x0[5], 1)) which results in the following constraint:
(43) (&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1)))=TRUE∧x1[6]=x1[5]∧java.lang.Object(ARRAY(x2[6], x3[6]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x0[6]=x0[5]∧x4[6]=x4[5]∧x5[6]=x5[5] ⇒ 4854_0_AUX_LE(x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])≥NonInfC∧4854_0_AUX_LE(x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])≥COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])∧(UIncreasing(COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])), ≥))
We simplified constraint (43) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:
(44) (<=(1, +(x0[6], 1))=TRUE∧>=(x0[6], 0)=TRUE∧>(x2[6], +(x0[6], 1))=TRUE∧<(x5[6], x4[6])=TRUE∧>(x2[6], x0[6])=TRUE ⇒ 4854_0_AUX_LE(x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])≥NonInfC∧4854_0_AUX_LE(x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])≥COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])∧(UIncreasing(COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])), ≥))
We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(45) (x0[6] ≥ 0∧x0[6] ≥ 0∧x2[6] + [-2] + [-1]x0[6] ≥ 0∧x4[6] + [-1] + [-1]x5[6] ≥ 0∧x2[6] + [-1] + [-1]x0[6] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])), ≥)∧[(-1)Bound*bni_44] + [(-1)bni_44]x0[6] + [bni_44]x2[6] + [(2)bni_44]x1[6] ≥ 0∧[(-1)bso_45] ≥ 0)
We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(46) (x0[6] ≥ 0∧x0[6] ≥ 0∧x2[6] + [-2] + [-1]x0[6] ≥ 0∧x4[6] + [-1] + [-1]x5[6] ≥ 0∧x2[6] + [-1] + [-1]x0[6] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])), ≥)∧[(-1)Bound*bni_44] + [(-1)bni_44]x0[6] + [bni_44]x2[6] + [(2)bni_44]x1[6] ≥ 0∧[(-1)bso_45] ≥ 0)
We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(47) (x0[6] ≥ 0∧x0[6] ≥ 0∧x2[6] + [-2] + [-1]x0[6] ≥ 0∧x4[6] + [-1] + [-1]x5[6] ≥ 0∧x2[6] + [-1] + [-1]x0[6] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])), ≥)∧[(-1)Bound*bni_44] + [(-1)bni_44]x0[6] + [bni_44]x2[6] + [(2)bni_44]x1[6] ≥ 0∧[(-1)bso_45] ≥ 0)
We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(48) (x0[6] ≥ 0∧x0[6] ≥ 0∧x2[6] + [-2] + [-1]x0[6] ≥ 0∧x4[6] + [-1] + [-1]x5[6] ≥ 0∧x2[6] + [-1] + [-1]x0[6] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])), ≥)∧0 = 0∧[(2)bni_44] = 0∧[(-1)Bound*bni_44] + [(-1)bni_44]x0[6] + [bni_44]x2[6] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)
We simplified constraint (48) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
(49) (x0[6] ≥ 0∧x0[6] ≥ 0∧x2[6] ≥ 0∧x4[6] + [-1] + [-1]x5[6] ≥ 0∧[1] + x2[6] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])), ≥)∧0 = 0∧[(2)bni_44] = 0∧[(-1)Bound*bni_44 + (2)bni_44] + [bni_44]x2[6] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)
We simplified constraint (49) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
(50) (x0[6] ≥ 0∧x0[6] ≥ 0∧x2[6] ≥ 0∧x4[6] ≥ 0∧[1] + x2[6] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])), ≥)∧0 = 0∧[(2)bni_44] = 0∧[(-1)Bound*bni_44 + (2)bni_44] + [bni_44]x2[6] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)
We simplified constraint (50) using rule (IDP_SMT_SPLIT) which results in the following new constraints:
(51) (x0[6] ≥ 0∧x0[6] ≥ 0∧x2[6] ≥ 0∧x4[6] ≥ 0∧[1] + x2[6] ≥ 0∧x5[6] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])), ≥)∧0 = 0∧[(2)bni_44] = 0∧[(-1)Bound*bni_44 + (2)bni_44] + [bni_44]x2[6] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)
(52) (x0[6] ≥ 0∧x0[6] ≥ 0∧x2[6] ≥ 0∧x4[6] ≥ 0∧[1] + x2[6] ≥ 0∧x5[6] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])), ≥)∧0 = 0∧[(2)bni_44] = 0∧[(-1)Bound*bni_44 + (2)bni_44] + [bni_44]x2[6] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)
To summarize, we get the following constraints P
≥ for the following pairs.
- 4199_0_AUX_LOAD(x1, java.lang.Object(ARRAY(x2, x3)), x0) → COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2, x0), >(x2, +(x0, 1))), >(x1, x0)), >=(x0, 0)), <=(1, +(x0, 1))), x1, java.lang.Object(ARRAY(x2, x3)), x0)
- (x0[0] ≥ 0∧x0[0] ≥ 0∧x1[0] ≥ 0∧[1] + x2[0] ≥ 0∧x2[0] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])), ≥)∧0 = 0∧[(-1)Bound*bni_32 + (4)bni_32] + [(2)bni_32]x0[0] + [bni_32]x2[0] + [(2)bni_32]x1[0] ≥ 0∧0 = 0∧[(-1)bso_33] ≥ 0)
- COND_4199_0_AUX_LOAD(TRUE, x1, java.lang.Object(ARRAY(x2, x3)), x0) → 4853_0_AUX_LE(x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5)
- ((UIncreasing(4853_0_AUX_LE(x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1], x4[1], x5[1])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)
- 4199_0_AUX_LOAD(x1, java.lang.Object(ARRAY(x2, x3)), x0) → COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2, x0), >(x2, +(x0, 1))), >(x1, x0)), >=(x0, 0)), <=(1, +(x0, 1))), x1, java.lang.Object(ARRAY(x2, x3)), x0)
- (x0[2] ≥ 0∧x0[2] ≥ 0∧x1[2] ≥ 0∧[1] + x2[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])), ≥)∧0 = 0∧[(-1)Bound*bni_36 + (4)bni_36] + [(2)bni_36]x0[2] + [bni_36]x2[2] + [(2)bni_36]x1[2] ≥ 0∧0 = 0∧[(-1)bso_37] ≥ 0)
- COND_4199_0_AUX_LOAD1(TRUE, x1, java.lang.Object(ARRAY(x2, x3)), x0) → 4854_0_AUX_LE(x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5)
- ((UIncreasing(4854_0_AUX_LE(x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3], x4[3], x5[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)
- 4853_0_AUX_LE(x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5) → COND_4853_0_AUX_LE(&&(>=(x5, x4), >=(x0, 0)), x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5)
- (x5[4] ≥ 0∧x0[4] ≥ 0∧x4[4] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])), ≥)∧0 = 0∧[bni_40] = 0∧[(2)bni_40] = 0∧[(-1)Bound*bni_40] + [(-1)bni_40]x0[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)
- (x5[4] ≥ 0∧x0[4] ≥ 0∧x4[4] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])), ≥)∧0 = 0∧[bni_40] = 0∧[(2)bni_40] = 0∧[(-1)Bound*bni_40] + [(-1)bni_40]x0[4] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)
- COND_4853_0_AUX_LE(TRUE, x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5) → 4199_0_AUX_LOAD(x1, java.lang.Object(ARRAY(x2, x3)), +(x0, 1))
- ((UIncreasing(4199_0_AUX_LOAD(x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), +(x0[5], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_43] ≥ 0)
- 4854_0_AUX_LE(x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5) → COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5, x4), >(x2, x0)), >(x2, +(x0, 1))), >=(x0, 0)), <=(1, +(x0, 1))), x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5)
- (x0[6] ≥ 0∧x0[6] ≥ 0∧x2[6] ≥ 0∧x4[6] ≥ 0∧[1] + x2[6] ≥ 0∧x5[6] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])), ≥)∧0 = 0∧[(2)bni_44] = 0∧[(-1)Bound*bni_44 + (2)bni_44] + [bni_44]x2[6] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)
- (x0[6] ≥ 0∧x0[6] ≥ 0∧x2[6] ≥ 0∧x4[6] ≥ 0∧[1] + x2[6] ≥ 0∧x5[6] ≥ 0 ⇒ (UIncreasing(COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])), ≥)∧0 = 0∧[(2)bni_44] = 0∧[(-1)Bound*bni_44 + (2)bni_44] + [bni_44]x2[6] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by "t > s" respective "t ≥
c". Here
c stands for the fresh constant used for P
bound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0
POL(FALSE) = 0
POL(5704_1_aux_InvokeMethod(x1, x2, x3, x4)) = [-1]
POL(4295_0_aux_Return(x1, x2, x3)) = [-1]
POL(java.lang.Object(x1)) = x1
POL(ARRAY(x1, x2)) = [-1] + [-1]x1
POL(5775_0_aux_Return) = [-1]
POL(5100_0_aux_ArrayAccess(x1, x2, x3)) = [-1]
POL(5778_0_aux_InvokeMethod(x1, x2, x3)) = [-1]
POL(5338_0_aux_ArrayAccess(x1, x2, x3, x4, x5)) = [-1]
POL(5579_0_aux_ArrayAccess(x1, x2, x3)) = [-1]
POL(6068_0_aux_ArrayAccess(x1, x2, x3, x4, x5)) = [-1]
POL(6115_0_aux_ArrayAccess(x1, x2, x3, x4, x5)) = [-1]
POL(6211_0_aux_ArrayAccess(x1, x2, x3, x4, x5)) = [-1]
POL(4199_0_AUX_LOAD(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2 + [2]x1
POL(COND_4199_0_AUX_LOAD(x1, x2, x3, x4)) = [-1] + [-1]x4 + [-1]x3 + [2]x2
POL(&&(x1, x2)) = [-1]
POL(>(x1, x2)) = [-1]
POL(+(x1, x2)) = x1 + x2
POL(1) = [1]
POL(>=(x1, x2)) = [-1]
POL(0) = 0
POL(<=(x1, x2)) = [-1]
POL(4853_0_AUX_LE(x1, x2, x3, x4, x5)) = [-1] + [-1]x3 + [-1]x2 + [2]x1
POL(COND_4199_0_AUX_LOAD1(x1, x2, x3, x4)) = [-1] + [-1]x4 + [-1]x3 + [2]x2
POL(4854_0_AUX_LE(x1, x2, x3, x4, x5)) = [-1] + [-1]x3 + [-1]x2 + [2]x1
POL(COND_4853_0_AUX_LE(x1, x2, x3, x4, x5, x6)) = [-1] + [-1]x4 + [-1]x3 + [2]x2
POL(<(x1, x2)) = [-1]
The following pairs are in P
>:
COND_4853_0_AUX_LE(TRUE, x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), x0[5], x4[5], x5[5]) → 4199_0_AUX_LOAD(x1[5], java.lang.Object(ARRAY(x2[5], x3[5])), +(x0[5], 1))
The following pairs are in P
bound:
4199_0_AUX_LOAD(x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0]) → COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])
4199_0_AUX_LOAD(x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2]) → COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])
The following pairs are in P
≥:
4199_0_AUX_LOAD(x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0]) → COND_4199_0_AUX_LOAD(&&(&&(&&(&&(>(x2[0], x0[0]), >(x2[0], +(x0[0], 1))), >(x1[0], x0[0])), >=(x0[0], 0)), <=(1, +(x0[0], 1))), x1[0], java.lang.Object(ARRAY(x2[0], x3[0])), x0[0])
COND_4199_0_AUX_LOAD(TRUE, x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1]) → 4853_0_AUX_LE(x1[1], java.lang.Object(ARRAY(x2[1], x3[1])), x0[1], x4[1], x5[1])
4199_0_AUX_LOAD(x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2]) → COND_4199_0_AUX_LOAD1(&&(&&(&&(&&(>(x2[2], x0[2]), >(x2[2], +(x0[2], 1))), >(x1[2], x0[2])), >=(x0[2], 0)), <=(1, +(x0[2], 1))), x1[2], java.lang.Object(ARRAY(x2[2], x3[2])), x0[2])
COND_4199_0_AUX_LOAD1(TRUE, x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3]) → 4854_0_AUX_LE(x1[3], java.lang.Object(ARRAY(x2[3], x3[3])), x0[3], x4[3], x5[3])
4853_0_AUX_LE(x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4]) → COND_4853_0_AUX_LE(&&(>=(x5[4], x4[4]), >=(x0[4], 0)), x1[4], java.lang.Object(ARRAY(x2[4], x3[4])), x0[4], x4[4], x5[4])
4854_0_AUX_LE(x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6]) → COND_4853_0_AUX_LE(&&(&&(&&(&&(<(x5[6], x4[6]), >(x2[6], x0[6])), >(x2[6], +(x0[6], 1))), >=(x0[6], 0)), <=(1, +(x0[6], 1))), x1[6], java.lang.Object(ARRAY(x2[6], x3[6])), x0[6], x4[6], x5[6])
There are no usable rules.
(7) Complex Obligation (AND)
(8) Obligation:
IDP problem:
The following function symbols are pre-defined:
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
| ~ | Bwxor: (Integer, Integer) -> Integer |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
The following domains are used:
Boolean, Integer
The ITRS R consists of the following rules:
5704_1_aux_InvokeMethod(
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5775_0_aux_Return5704_1_aux_InvokeMethod(
5100_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5338_0_aux_ArrayAccess(
x1,
x0,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5579_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5775_0_aux_Return,
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5775_0_aux_Return5704_1_aux_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x1,
java.lang.Object(
ARRAY(
x5,
x6))) →
5778_0_aux_InvokeMethod(
x4,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6068_0_aux_ArrayAccess(
x1,
x4,
x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6115_0_aux_ArrayAccess(
x1,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6211_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x6,
x7))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
The integer pair graph contains the following rules and edges:
(0):
4199_0_AUX_LOAD(
x1[0],
java.lang.Object(
ARRAY(
x2[0],
x3[0])),
x0[0]) →
COND_4199_0_AUX_LOAD(
x2[0] > x0[0] && x2[0] > x0[0] + 1 && x1[0] > x0[0] && x0[0] >= 0 && 1 <= x0[0] + 1,
x1[0],
java.lang.Object(
ARRAY(
x2[0],
x3[0])),
x0[0])
(1):
COND_4199_0_AUX_LOAD(
TRUE,
x1[1],
java.lang.Object(
ARRAY(
x2[1],
x3[1])),
x0[1]) →
4853_0_AUX_LE(
x1[1],
java.lang.Object(
ARRAY(
x2[1],
x3[1])),
x0[1],
x4[1],
x5[1])
(2):
4199_0_AUX_LOAD(
x1[2],
java.lang.Object(
ARRAY(
x2[2],
x3[2])),
x0[2]) →
COND_4199_0_AUX_LOAD1(
x2[2] > x0[2] && x2[2] > x0[2] + 1 && x1[2] > x0[2] && x0[2] >= 0 && 1 <= x0[2] + 1,
x1[2],
java.lang.Object(
ARRAY(
x2[2],
x3[2])),
x0[2])
(3):
COND_4199_0_AUX_LOAD1(
TRUE,
x1[3],
java.lang.Object(
ARRAY(
x2[3],
x3[3])),
x0[3]) →
4854_0_AUX_LE(
x1[3],
java.lang.Object(
ARRAY(
x2[3],
x3[3])),
x0[3],
x4[3],
x5[3])
(4):
4853_0_AUX_LE(
x1[4],
java.lang.Object(
ARRAY(
x2[4],
x3[4])),
x0[4],
x4[4],
x5[4]) →
COND_4853_0_AUX_LE(
x5[4] >= x4[4] && x0[4] >= 0,
x1[4],
java.lang.Object(
ARRAY(
x2[4],
x3[4])),
x0[4],
x4[4],
x5[4])
(6):
4854_0_AUX_LE(
x1[6],
java.lang.Object(
ARRAY(
x2[6],
x3[6])),
x0[6],
x4[6],
x5[6]) →
COND_4853_0_AUX_LE(
x5[6] < x4[6] && x2[6] > x0[6] && x2[6] > x0[6] + 1 && x0[6] >= 0 && 1 <= x0[6] + 1,
x1[6],
java.lang.Object(
ARRAY(
x2[6],
x3[6])),
x0[6],
x4[6],
x5[6])
(0) -> (1), if ((x2[0] > x0[0] && x2[0] > x0[0] + 1 && x1[0] > x0[0] && x0[0] >= 0 && 1 <= x0[0] + 1 →* TRUE)∧(x1[0] →* x1[1])∧(java.lang.Object(ARRAY(x2[0], x3[0])) →* java.lang.Object(ARRAY(x2[1], x3[1])))∧(x0[0] →* x0[1]))
(2) -> (3), if ((x2[2] > x0[2] && x2[2] > x0[2] + 1 && x1[2] > x0[2] && x0[2] >= 0 && 1 <= x0[2] + 1 →* TRUE)∧(x1[2] →* x1[3])∧(java.lang.Object(ARRAY(x2[2], x3[2])) →* java.lang.Object(ARRAY(x2[3], x3[3])))∧(x0[2] →* x0[3]))
(1) -> (4), if ((x1[1] →* x1[4])∧(java.lang.Object(ARRAY(x2[1], x3[1])) →* java.lang.Object(ARRAY(x2[4], x3[4])))∧(x0[1] →* x0[4])∧(x4[1] →* x4[4])∧(x5[1] →* x5[4]))
(3) -> (6), if ((x1[3] →* x1[6])∧(java.lang.Object(ARRAY(x2[3], x3[3])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x0[3] →* x0[6])∧(x4[3] →* x4[6])∧(x5[3] →* x5[6]))
The set Q consists of the following terms:
5704_1_aux_InvokeMethod(
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5100_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3),
x3,
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
5704_1_aux_InvokeMethod(
5338_0_aux_ArrayAccess(
x0,
x1,
x2,
java.lang.Object(
ARRAY(
x3,
x4)),
x5),
x1,
x0,
java.lang.Object(
ARRAY(
x3,
x4)))
5704_1_aux_InvokeMethod(
5579_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3),
x3,
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
5704_1_aux_InvokeMethod(
5775_0_aux_Return,
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x1,
java.lang.Object(
ARRAY(
x5,
x6)))
5704_1_aux_InvokeMethod(
6068_0_aux_ArrayAccess(
x0,
x1,
x2,
java.lang.Object(
ARRAY(
x3,
x4)),
x5),
x2,
x0,
java.lang.Object(
ARRAY(
x3,
x4)))
5704_1_aux_InvokeMethod(
6115_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x4,
x0,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6211_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x6,
x7)))
(9) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 6 less nodes.
(10) TRUE
(11) Obligation:
IDP problem:
The following function symbols are pre-defined:
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
| ~ | Bwxor: (Integer, Integer) -> Integer |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
The following domains are used:
Boolean, Integer
The ITRS R consists of the following rules:
5704_1_aux_InvokeMethod(
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5775_0_aux_Return5704_1_aux_InvokeMethod(
5100_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5338_0_aux_ArrayAccess(
x1,
x0,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5579_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5775_0_aux_Return,
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5775_0_aux_Return5704_1_aux_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x1,
java.lang.Object(
ARRAY(
x5,
x6))) →
5778_0_aux_InvokeMethod(
x4,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6068_0_aux_ArrayAccess(
x1,
x4,
x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6115_0_aux_ArrayAccess(
x1,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6211_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x6,
x7))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
The integer pair graph contains the following rules and edges:
(1):
COND_4199_0_AUX_LOAD(
TRUE,
x1[1],
java.lang.Object(
ARRAY(
x2[1],
x3[1])),
x0[1]) →
4853_0_AUX_LE(
x1[1],
java.lang.Object(
ARRAY(
x2[1],
x3[1])),
x0[1],
x4[1],
x5[1])
(3):
COND_4199_0_AUX_LOAD1(
TRUE,
x1[3],
java.lang.Object(
ARRAY(
x2[3],
x3[3])),
x0[3]) →
4854_0_AUX_LE(
x1[3],
java.lang.Object(
ARRAY(
x2[3],
x3[3])),
x0[3],
x4[3],
x5[3])
(4):
4853_0_AUX_LE(
x1[4],
java.lang.Object(
ARRAY(
x2[4],
x3[4])),
x0[4],
x4[4],
x5[4]) →
COND_4853_0_AUX_LE(
x5[4] >= x4[4] && x0[4] >= 0,
x1[4],
java.lang.Object(
ARRAY(
x2[4],
x3[4])),
x0[4],
x4[4],
x5[4])
(5):
COND_4853_0_AUX_LE(
TRUE,
x1[5],
java.lang.Object(
ARRAY(
x2[5],
x3[5])),
x0[5],
x4[5],
x5[5]) →
4199_0_AUX_LOAD(
x1[5],
java.lang.Object(
ARRAY(
x2[5],
x3[5])),
x0[5] + 1)
(6):
4854_0_AUX_LE(
x1[6],
java.lang.Object(
ARRAY(
x2[6],
x3[6])),
x0[6],
x4[6],
x5[6]) →
COND_4853_0_AUX_LE(
x5[6] < x4[6] && x2[6] > x0[6] && x2[6] > x0[6] + 1 && x0[6] >= 0 && 1 <= x0[6] + 1,
x1[6],
java.lang.Object(
ARRAY(
x2[6],
x3[6])),
x0[6],
x4[6],
x5[6])
(1) -> (4), if ((x1[1] →* x1[4])∧(java.lang.Object(ARRAY(x2[1], x3[1])) →* java.lang.Object(ARRAY(x2[4], x3[4])))∧(x0[1] →* x0[4])∧(x4[1] →* x4[4])∧(x5[1] →* x5[4]))
(4) -> (5), if ((x5[4] >= x4[4] && x0[4] >= 0 →* TRUE)∧(x1[4] →* x1[5])∧(java.lang.Object(ARRAY(x2[4], x3[4])) →* java.lang.Object(ARRAY(x2[5], x3[5])))∧(x0[4] →* x0[5])∧(x4[4] →* x4[5])∧(x5[4] →* x5[5]))
(6) -> (5), if ((x5[6] < x4[6] && x2[6] > x0[6] && x2[6] > x0[6] + 1 && x0[6] >= 0 && 1 <= x0[6] + 1 →* TRUE)∧(x1[6] →* x1[5])∧(java.lang.Object(ARRAY(x2[6], x3[6])) →* java.lang.Object(ARRAY(x2[5], x3[5])))∧(x0[6] →* x0[5])∧(x4[6] →* x4[5])∧(x5[6] →* x5[5]))
(3) -> (6), if ((x1[3] →* x1[6])∧(java.lang.Object(ARRAY(x2[3], x3[3])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x0[3] →* x0[6])∧(x4[3] →* x4[6])∧(x5[3] →* x5[6]))
The set Q consists of the following terms:
5704_1_aux_InvokeMethod(
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5100_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3),
x3,
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
5704_1_aux_InvokeMethod(
5338_0_aux_ArrayAccess(
x0,
x1,
x2,
java.lang.Object(
ARRAY(
x3,
x4)),
x5),
x1,
x0,
java.lang.Object(
ARRAY(
x3,
x4)))
5704_1_aux_InvokeMethod(
5579_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3),
x3,
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
5704_1_aux_InvokeMethod(
5775_0_aux_Return,
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x1,
java.lang.Object(
ARRAY(
x5,
x6)))
5704_1_aux_InvokeMethod(
6068_0_aux_ArrayAccess(
x0,
x1,
x2,
java.lang.Object(
ARRAY(
x3,
x4)),
x5),
x2,
x0,
java.lang.Object(
ARRAY(
x3,
x4)))
5704_1_aux_InvokeMethod(
6115_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x4,
x0,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6211_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x6,
x7)))
(12) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 5 less nodes.
(13) TRUE
(14) Obligation:
IDP problem:
The following function symbols are pre-defined:
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
| ~ | Bwxor: (Integer, Integer) -> Integer |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
The following domains are used:
Integer, Boolean
The ITRS R consists of the following rules:
6187_0_aux_Load(
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
0,
x1)
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5100_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
0),
x6,
x7,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5338_0_aux_ArrayAccess(
x1,
0,
x5,
java.lang.Object(
ARRAY(
x2,
x3)),
x6),
x7,
x8,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5579_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
0),
x6,
x7,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x6,
x7,
x1,
java.lang.Object(
ARRAY(
x4,
x5))),
java.lang.Object(
ARRAY(
x4,
x5))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6068_0_aux_ArrayAccess(
x1,
x5,
0,
java.lang.Object(
ARRAY(
x2,
x3)),
x7),
x8,
x9,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6115_0_aux_ArrayAccess(
x1,
x5,
java.lang.Object(
ARRAY(
x2,
x3)),
0,
x7),
x8,
x9,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6211_0_aux_ArrayAccess(
0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x8,
x9,
x1,
java.lang.Object(
ARRAY(
x6,
x7))),
java.lang.Object(
ARRAY(
x6,
x7))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT(
x1 <= x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT1(
x2 <= x0 && x1 > x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT1(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
5100_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0)
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT2(
x2 > x0 && x2 > x0 + 1 && x1 > x0 && x0 >= 0 && 1 <= x0 + 1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT2(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
4853_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT3(
x2 > x0 && x2 > x0 + 1 && x1 > x0 && x0 >= 0 && 1 <= x0 + 1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT3(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
4854_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT4(
x2 > x0 && x2 <= x0 + 1 && x1 > x0 && x0 >= 0,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT4(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
5338_0_aux_ArrayAccess(
x1,
x0,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x0 + 1)
4854_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
Cond_4854_0_aux_LE(
x5 < x4 && x2 <= x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
Cond_4854_0_aux_LE(
TRUE,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
5579_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0)
4854_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
Cond_4854_0_aux_LE1(
x5 < x4 && x2 > x0 && x2 <= x0 + 1 && x0 >= 0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
Cond_4854_0_aux_LE1(
TRUE,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
6068_0_aux_ArrayAccess(
x1,
x6,
x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x0 + 1)
4853_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
Cond_4853_0_aux_LE(
x5 >= x4 && x0 >= 0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
Cond_4853_0_aux_LE(
TRUE,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
5704_1_aux_InvokeMethod(
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0 + 1,
x1),
x0 + 1,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
4854_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
Cond_4853_0_aux_LE(
x5 < x4 && x2 > x0 && x2 > x0 + 1 && x0 >= 0 && 1 <= x0 + 1,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
5704_1_aux_InvokeMethod(
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5775_0_aux_Return5704_1_aux_InvokeMethod(
5100_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5338_0_aux_ArrayAccess(
x1,
x0,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5579_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5775_0_aux_Return,
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5775_0_aux_Return5704_1_aux_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x1,
java.lang.Object(
ARRAY(
x5,
x6))) →
5778_0_aux_InvokeMethod(
x4,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6068_0_aux_ArrayAccess(
x1,
x4,
x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6115_0_aux_ArrayAccess(
x1,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6211_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x6,
x7))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
The integer pair graph contains the following rules and edges:
(0):
6187_2_MAIN_INVOKEMETHOD(
6187_1_sort_InvokeMethod(
4295_0_aux_Return(
0,
x1[0],
java.lang.Object(
ARRAY(
x2[0],
x3[0]))),
x4[0],
x5[0],
x1[0],
java.lang.Object(
ARRAY(
x2[0],
x3[0]))),
java.lang.Object(
ARRAY(
x2[0],
x3[0]))) →
COND_6187_2_MAIN_INVOKEMETHOD(
x4[0] > x5[0] + 1,
6187_1_sort_InvokeMethod(
4295_0_aux_Return(
0,
x1[0],
java.lang.Object(
ARRAY(
x2[0],
x3[0]))),
x4[0],
x5[0],
x1[0],
java.lang.Object(
ARRAY(
x2[0],
x3[0]))),
java.lang.Object(
ARRAY(
x2[0],
x3[0])))
(1):
COND_6187_2_MAIN_INVOKEMETHOD(
TRUE,
6187_1_sort_InvokeMethod(
4295_0_aux_Return(
0,
x1[1],
java.lang.Object(
ARRAY(
x2[1],
x3[1]))),
x4[1],
x5[1],
x1[1],
java.lang.Object(
ARRAY(
x2[1],
x3[1]))),
java.lang.Object(
ARRAY(
x2[1],
x3[1]))) →
6187_2_MAIN_INVOKEMETHOD(
6187_1_sort_InvokeMethod(
6187_0_aux_Load(
x4[1] - x5[1] + 1,
java.lang.Object(
ARRAY(
x2[1],
x3[1]))),
x4[1],
x5[1] + 1,
x4[1] - x5[1] + 1,
java.lang.Object(
ARRAY(
x2[1],
x3[1]))),
java.lang.Object(
ARRAY(
x2[1],
x3[1])))
(2):
6187_2_MAIN_INVOKEMETHOD(
6187_1_sort_InvokeMethod(
5775_0_aux_Return,
x2[2],
x3[2],
x5[2],
java.lang.Object(
ARRAY(
x0[2],
x1[2]))),
java.lang.Object(
ARRAY(
x0[2],
x1[2]))) →
COND_6187_2_MAIN_INVOKEMETHOD1(
x2[2] > x3[2] + 1,
6187_1_sort_InvokeMethod(
5775_0_aux_Return,
x2[2],
x3[2],
x5[2],
java.lang.Object(
ARRAY(
x0[2],
x1[2]))),
java.lang.Object(
ARRAY(
x0[2],
x1[2])))
(3):
COND_6187_2_MAIN_INVOKEMETHOD1(
TRUE,
6187_1_sort_InvokeMethod(
5775_0_aux_Return,
x2[3],
x3[3],
x5[3],
java.lang.Object(
ARRAY(
x0[3],
x1[3]))),
java.lang.Object(
ARRAY(
x0[3],
x1[3]))) →
6187_2_MAIN_INVOKEMETHOD(
6187_1_sort_InvokeMethod(
6187_0_aux_Load(
x2[3] - x3[3] + 1,
java.lang.Object(
ARRAY(
x6[3],
x7[3]))),
x2[3],
x3[3] + 1,
x2[3] - x3[3] + 1,
java.lang.Object(
ARRAY(
x6[3],
x7[3]))),
java.lang.Object(
ARRAY(
x6[3],
x7[3])))
(0) -> (1), if ((x4[0] > x5[0] + 1 →* TRUE)∧(6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))) →* 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], x5[1], x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))))∧(java.lang.Object(ARRAY(x2[0], x3[0])) →* java.lang.Object(ARRAY(x2[1], x3[1]))))
(1) -> (0), if ((6187_1_sort_InvokeMethod(6187_0_aux_Load(x4[1] - x5[1] + 1, java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], x5[1] + 1, x4[1] - x5[1] + 1, java.lang.Object(ARRAY(x2[1], x3[1]))) →* 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))))∧(java.lang.Object(ARRAY(x2[1], x3[1])) →* java.lang.Object(ARRAY(x2[0], x3[0]))))
(1) -> (2), if ((6187_1_sort_InvokeMethod(6187_0_aux_Load(x4[1] - x5[1] + 1, java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], x5[1] + 1, x4[1] - x5[1] + 1, java.lang.Object(ARRAY(x2[1], x3[1]))) →* 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))))∧(java.lang.Object(ARRAY(x2[1], x3[1])) →* java.lang.Object(ARRAY(x0[2], x1[2]))))
(2) -> (3), if ((x2[2] > x3[2] + 1 →* TRUE)∧(6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))) →* 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[3], x3[3], x5[3], java.lang.Object(ARRAY(x0[3], x1[3]))))∧(java.lang.Object(ARRAY(x0[2], x1[2])) →* java.lang.Object(ARRAY(x0[3], x1[3]))))
(3) -> (0), if ((6187_1_sort_InvokeMethod(6187_0_aux_Load(x2[3] - x3[3] + 1, java.lang.Object(ARRAY(x6[3], x7[3]))), x2[3], x3[3] + 1, x2[3] - x3[3] + 1, java.lang.Object(ARRAY(x6[3], x7[3]))) →* 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))))∧(java.lang.Object(ARRAY(x6[3], x7[3])) →* java.lang.Object(ARRAY(x2[0], x3[0]))))
(3) -> (2), if ((6187_1_sort_InvokeMethod(6187_0_aux_Load(x2[3] - x3[3] + 1, java.lang.Object(ARRAY(x6[3], x7[3]))), x2[3], x3[3] + 1, x2[3] - x3[3] + 1, java.lang.Object(ARRAY(x6[3], x7[3]))) →* 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))))∧(java.lang.Object(ARRAY(x6[3], x7[3])) →* java.lang.Object(ARRAY(x0[2], x1[2]))))
The set Q consists of the following terms:
6187_0_aux_Load(
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5100_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
0),
x3,
x4,
x0,
java.lang.Object(
ARRAY(
x1,
x2))),
java.lang.Object(
ARRAY(
x1,
x2)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5338_0_aux_ArrayAccess(
x0,
0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4),
x5,
x6,
x0,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5579_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
0),
x3,
x4,
x0,
java.lang.Object(
ARRAY(
x1,
x2))),
java.lang.Object(
ARRAY(
x1,
x2)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x5,
x1,
java.lang.Object(
ARRAY(
x6,
x7))),
java.lang.Object(
ARRAY(
x6,
x7)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6068_0_aux_ArrayAccess(
x0,
x1,
0,
java.lang.Object(
ARRAY(
x2,
x3)),
x4),
x5,
x6,
x0,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6115_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
0,
x4),
x5,
x6,
x0,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6211_0_aux_ArrayAccess(
0,
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4),
x5,
x6,
x0,
java.lang.Object(
ARRAY(
x7,
x8))),
java.lang.Object(
ARRAY(
x7,
x8)))
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT1(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT2(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT3(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT4(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
4854_0_aux_LE(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
Cond_4854_0_aux_LE(
TRUE,
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
Cond_4854_0_aux_LE1(
TRUE,
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
4853_0_aux_LE(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
Cond_4853_0_aux_LE(
TRUE,
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
5704_1_aux_InvokeMethod(
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5100_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3),
x3,
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
5704_1_aux_InvokeMethod(
5338_0_aux_ArrayAccess(
x0,
x1,
x2,
java.lang.Object(
ARRAY(
x3,
x4)),
x5),
x1,
x0,
java.lang.Object(
ARRAY(
x3,
x4)))
5704_1_aux_InvokeMethod(
5579_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3),
x3,
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
5704_1_aux_InvokeMethod(
5775_0_aux_Return,
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x1,
java.lang.Object(
ARRAY(
x5,
x6)))
5704_1_aux_InvokeMethod(
6068_0_aux_ArrayAccess(
x0,
x1,
x2,
java.lang.Object(
ARRAY(
x3,
x4)),
x5),
x2,
x0,
java.lang.Object(
ARRAY(
x3,
x4)))
5704_1_aux_InvokeMethod(
6115_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x4,
x0,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6211_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x6,
x7)))
(15) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that
final constraints are written in
bold face.
For Pair
6187_2_MAIN_INVOKEMETHOD(
6187_1_sort_InvokeMethod(
4295_0_aux_Return(
0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x5,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
COND_6187_2_MAIN_INVOKEMETHOD(
>(
x4,
+(
x5,
1)),
6187_1_sort_InvokeMethod(
4295_0_aux_Return(
0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x5,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) the following chains were created:
- We consider the chain 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0]))) → COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0]))), COND_6187_2_MAIN_INVOKEMETHOD(TRUE, 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], x5[1], x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1]))) → 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], +(x5[1], 1), -(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1]))) which results in the following constraint:
(1) (>(x4[0], +(x5[0], 1))=TRUE∧6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0])))=6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], x5[1], x1[1], java.lang.Object(ARRAY(x2[1], x3[1])))∧java.lang.Object(ARRAY(x2[0], x3[0]))=java.lang.Object(ARRAY(x2[1], x3[1])) ⇒ 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))≥NonInfC∧6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))≥COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))∧(UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))), ≥))
We simplified constraint (1) using rules (I), (II), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:
(2) (>(x4[0], +(x5[0], 1))=TRUE ⇒ 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))≥NonInfC∧6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))≥COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))∧(UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))), ≥))
We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(3) (x4[0] + [-2] + [-1]x5[0] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-1)bni_70]x5[0] + [bni_70]x4[0] ≥ 0∧[(-1)bso_71] ≥ 0)
We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(4) (x4[0] + [-2] + [-1]x5[0] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-1)bni_70]x5[0] + [bni_70]x4[0] ≥ 0∧[(-1)bso_71] ≥ 0)
We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(5) (x4[0] + [-2] + [-1]x5[0] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-1)bni_70]x5[0] + [bni_70]x4[0] ≥ 0∧[(-1)bso_71] ≥ 0)
We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(6) (x4[0] + [-2] + [-1]x5[0] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-1)bni_70]x5[0] + [bni_70]x4[0] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_71] ≥ 0)
We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
(7) (x4[0] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[bni_70 + (-1)Bound*bni_70] + [bni_70]x4[0] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_71] ≥ 0)
We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraints:
(8) (x4[0] ≥ 0∧x5[0] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[bni_70 + (-1)Bound*bni_70] + [bni_70]x4[0] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_71] ≥ 0)
(9) (x4[0] ≥ 0∧x5[0] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[bni_70 + (-1)Bound*bni_70] + [bni_70]x4[0] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_71] ≥ 0)
For Pair
COND_6187_2_MAIN_INVOKEMETHOD(
TRUE,
6187_1_sort_InvokeMethod(
4295_0_aux_Return(
0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x5,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6187_2_MAIN_INVOKEMETHOD(
6187_1_sort_InvokeMethod(
6187_0_aux_Load(
-(
x4,
+(
x5,
1)),
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
+(
x5,
1),
-(
x4,
+(
x5,
1)),
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) the following chains were created:
- We consider the chain COND_6187_2_MAIN_INVOKEMETHOD(TRUE, 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], x5[1], x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1]))) → 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], +(x5[1], 1), -(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1]))) which results in the following constraint:
(10) (COND_6187_2_MAIN_INVOKEMETHOD(TRUE, 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], x5[1], x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1])))≥NonInfC∧COND_6187_2_MAIN_INVOKEMETHOD(TRUE, 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], x5[1], x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1])))≥6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], +(x5[1], 1), -(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1])))∧(UIncreasing(6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], +(x5[1], 1), -(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1])))), ≥))
We simplified constraint (10) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(11) ((UIncreasing(6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], +(x5[1], 1), -(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1])))), ≥)∧[1 + (-1)bso_73] ≥ 0)
We simplified constraint (11) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(12) ((UIncreasing(6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], +(x5[1], 1), -(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1])))), ≥)∧[1 + (-1)bso_73] ≥ 0)
We simplified constraint (12) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(13) ((UIncreasing(6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], +(x5[1], 1), -(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1])))), ≥)∧[1 + (-1)bso_73] ≥ 0)
We simplified constraint (13) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(14) ((UIncreasing(6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], +(x5[1], 1), -(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_73] ≥ 0)
For Pair
6187_2_MAIN_INVOKEMETHOD(
6187_1_sort_InvokeMethod(
5775_0_aux_Return,
x2,
x3,
x5,
java.lang.Object(
ARRAY(
x0,
x1))),
java.lang.Object(
ARRAY(
x0,
x1))) →
COND_6187_2_MAIN_INVOKEMETHOD1(
>(
x2,
+(
x3,
1)),
6187_1_sort_InvokeMethod(
5775_0_aux_Return,
x2,
x3,
x5,
java.lang.Object(
ARRAY(
x0,
x1))),
java.lang.Object(
ARRAY(
x0,
x1))) the following chains were created:
- We consider the chain 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2]))) → COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2]))), COND_6187_2_MAIN_INVOKEMETHOD1(TRUE, 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[3], x3[3], x5[3], java.lang.Object(ARRAY(x0[3], x1[3]))), java.lang.Object(ARRAY(x0[3], x1[3]))) → 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), x2[3], +(x3[3], 1), -(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), java.lang.Object(ARRAY(x6[3], x7[3]))) which results in the following constraint:
(15) (>(x2[2], +(x3[2], 1))=TRUE∧6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2])))=6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[3], x3[3], x5[3], java.lang.Object(ARRAY(x0[3], x1[3])))∧java.lang.Object(ARRAY(x0[2], x1[2]))=java.lang.Object(ARRAY(x0[3], x1[3])) ⇒ 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))≥NonInfC∧6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))≥COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))∧(UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))), ≥))
We simplified constraint (15) using rules (I), (II), (IV), (DELETE_TRIVIAL_REDUCESTO) which results in the following new constraint:
(16) (>(x2[2], +(x3[2], 1))=TRUE ⇒ 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))≥NonInfC∧6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))≥COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))∧(UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))), ≥))
We simplified constraint (16) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(17) (x2[2] + [-2] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))), ≥)∧[(-1)bni_74 + (-1)Bound*bni_74] + [(-1)bni_74]x3[2] + [bni_74]x2[2] ≥ 0∧[(-1)bso_75] ≥ 0)
We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(18) (x2[2] + [-2] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))), ≥)∧[(-1)bni_74 + (-1)Bound*bni_74] + [(-1)bni_74]x3[2] + [bni_74]x2[2] ≥ 0∧[(-1)bso_75] ≥ 0)
We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(19) (x2[2] + [-2] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))), ≥)∧[(-1)bni_74 + (-1)Bound*bni_74] + [(-1)bni_74]x3[2] + [bni_74]x2[2] ≥ 0∧[(-1)bso_75] ≥ 0)
We simplified constraint (19) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(20) (x2[2] + [-2] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[(-1)bni_74 + (-1)Bound*bni_74] + [(-1)bni_74]x3[2] + [bni_74]x2[2] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_75] ≥ 0)
We simplified constraint (20) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
(21) (x2[2] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[bni_74 + (-1)Bound*bni_74] + [bni_74]x2[2] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_75] ≥ 0)
We simplified constraint (21) using rule (IDP_SMT_SPLIT) which results in the following new constraints:
(22) (x2[2] ≥ 0∧x3[2] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[bni_74 + (-1)Bound*bni_74] + [bni_74]x2[2] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_75] ≥ 0)
(23) (x2[2] ≥ 0∧x3[2] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[bni_74 + (-1)Bound*bni_74] + [bni_74]x2[2] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_75] ≥ 0)
For Pair
COND_6187_2_MAIN_INVOKEMETHOD1(
TRUE,
6187_1_sort_InvokeMethod(
5775_0_aux_Return,
x2,
x3,
x5,
java.lang.Object(
ARRAY(
x0,
x1))),
java.lang.Object(
ARRAY(
x0,
x1))) →
6187_2_MAIN_INVOKEMETHOD(
6187_1_sort_InvokeMethod(
6187_0_aux_Load(
-(
x2,
+(
x3,
1)),
java.lang.Object(
ARRAY(
x6,
x7))),
x2,
+(
x3,
1),
-(
x2,
+(
x3,
1)),
java.lang.Object(
ARRAY(
x6,
x7))),
java.lang.Object(
ARRAY(
x6,
x7))) the following chains were created:
- We consider the chain COND_6187_2_MAIN_INVOKEMETHOD1(TRUE, 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[3], x3[3], x5[3], java.lang.Object(ARRAY(x0[3], x1[3]))), java.lang.Object(ARRAY(x0[3], x1[3]))) → 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), x2[3], +(x3[3], 1), -(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), java.lang.Object(ARRAY(x6[3], x7[3]))) which results in the following constraint:
(24) (COND_6187_2_MAIN_INVOKEMETHOD1(TRUE, 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[3], x3[3], x5[3], java.lang.Object(ARRAY(x0[3], x1[3]))), java.lang.Object(ARRAY(x0[3], x1[3])))≥NonInfC∧COND_6187_2_MAIN_INVOKEMETHOD1(TRUE, 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[3], x3[3], x5[3], java.lang.Object(ARRAY(x0[3], x1[3]))), java.lang.Object(ARRAY(x0[3], x1[3])))≥6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), x2[3], +(x3[3], 1), -(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), java.lang.Object(ARRAY(x6[3], x7[3])))∧(UIncreasing(6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), x2[3], +(x3[3], 1), -(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), java.lang.Object(ARRAY(x6[3], x7[3])))), ≥))
We simplified constraint (24) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(25) ((UIncreasing(6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), x2[3], +(x3[3], 1), -(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), java.lang.Object(ARRAY(x6[3], x7[3])))), ≥)∧[1 + (-1)bso_77] ≥ 0)
We simplified constraint (25) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(26) ((UIncreasing(6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), x2[3], +(x3[3], 1), -(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), java.lang.Object(ARRAY(x6[3], x7[3])))), ≥)∧[1 + (-1)bso_77] ≥ 0)
We simplified constraint (26) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(27) ((UIncreasing(6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), x2[3], +(x3[3], 1), -(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), java.lang.Object(ARRAY(x6[3], x7[3])))), ≥)∧[1 + (-1)bso_77] ≥ 0)
We simplified constraint (27) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(28) ((UIncreasing(6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), x2[3], +(x3[3], 1), -(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), java.lang.Object(ARRAY(x6[3], x7[3])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_77] ≥ 0)
To summarize, we get the following constraints P
≥ for the following pairs.
- 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1, java.lang.Object(ARRAY(x2, x3))), x4, x5, x1, java.lang.Object(ARRAY(x2, x3))), java.lang.Object(ARRAY(x2, x3))) → COND_6187_2_MAIN_INVOKEMETHOD(>(x4, +(x5, 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1, java.lang.Object(ARRAY(x2, x3))), x4, x5, x1, java.lang.Object(ARRAY(x2, x3))), java.lang.Object(ARRAY(x2, x3)))
- (x4[0] ≥ 0∧x5[0] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[bni_70 + (-1)Bound*bni_70] + [bni_70]x4[0] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_71] ≥ 0)
- (x4[0] ≥ 0∧x5[0] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[bni_70 + (-1)Bound*bni_70] + [bni_70]x4[0] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_71] ≥ 0)
- COND_6187_2_MAIN_INVOKEMETHOD(TRUE, 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1, java.lang.Object(ARRAY(x2, x3))), x4, x5, x1, java.lang.Object(ARRAY(x2, x3))), java.lang.Object(ARRAY(x2, x3))) → 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x4, +(x5, 1)), java.lang.Object(ARRAY(x2, x3))), x4, +(x5, 1), -(x4, +(x5, 1)), java.lang.Object(ARRAY(x2, x3))), java.lang.Object(ARRAY(x2, x3)))
- ((UIncreasing(6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], +(x5[1], 1), -(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_73] ≥ 0)
- 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(5775_0_aux_Return, x2, x3, x5, java.lang.Object(ARRAY(x0, x1))), java.lang.Object(ARRAY(x0, x1))) → COND_6187_2_MAIN_INVOKEMETHOD1(>(x2, +(x3, 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2, x3, x5, java.lang.Object(ARRAY(x0, x1))), java.lang.Object(ARRAY(x0, x1)))
- (x2[2] ≥ 0∧x3[2] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[bni_74 + (-1)Bound*bni_74] + [bni_74]x2[2] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_75] ≥ 0)
- (x2[2] ≥ 0∧x3[2] ≥ 0 ⇒ (UIncreasing(COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[bni_74 + (-1)Bound*bni_74] + [bni_74]x2[2] ≥ 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_75] ≥ 0)
- COND_6187_2_MAIN_INVOKEMETHOD1(TRUE, 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2, x3, x5, java.lang.Object(ARRAY(x0, x1))), java.lang.Object(ARRAY(x0, x1))) → 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x2, +(x3, 1)), java.lang.Object(ARRAY(x6, x7))), x2, +(x3, 1), -(x2, +(x3, 1)), java.lang.Object(ARRAY(x6, x7))), java.lang.Object(ARRAY(x6, x7)))
- ((UIncreasing(6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), x2[3], +(x3[3], 1), -(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), java.lang.Object(ARRAY(x6[3], x7[3])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_77] ≥ 0)
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by "t > s" respective "t ≥
c". Here
c stands for the fresh constant used for P
bound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0
POL(FALSE) = 0
POL(6187_0_aux_Load(x1, x2)) = [-1] + [-1]x2
POL(java.lang.Object(x1)) = x1
POL(ARRAY(x1, x2)) = [-1] + [-1]x2
POL(4204_0_aux_LT(x1, x2, x3)) = x2 + [-1]x1
POL(0) = 0
POL(6187_2_main_InvokeMethod(x1, x2)) = [-1]
POL(6187_1_sort_InvokeMethod(x1, x2, x3, x4, x5)) = [-1]x5 + x3 + [-1]x2
POL(5100_0_aux_ArrayAccess(x1, x2, x3)) = [-1] + [-1]x1 + x3 + [-1]x2
POL(6255_0_main_InvokeMethod(x1)) = [-1]
POL(5338_0_aux_ArrayAccess(x1, x2, x3, x4, x5)) = [-1] + [2]x5 + x1 + x2 + [-1]x4
POL(5579_0_aux_ArrayAccess(x1, x2, x3)) = [-1] + x3 + [-1]x2
POL(5778_0_aux_InvokeMethod(x1, x2, x3)) = [-1]x3 + x1
POL(6068_0_aux_ArrayAccess(x1, x2, x3, x4, x5)) = [-1] + [-1]x5 + [-1]x2 + x3 + [-1]x4
POL(6115_0_aux_ArrayAccess(x1, x2, x3, x4, x5)) = [-1] + x5 + [-1]x4 + [-1]x3 + x2 + [-1]x1
POL(6211_0_aux_ArrayAccess(x1, x2, x3, x4, x5)) = [-1] + x5 + x4 + [-1]x3 + x2 + [2]x1
POL(Cond_4204_0_aux_LT(x1, x2, x3, x4)) = [1] + x3 + [-1]x2
POL(<=(x1, x2)) = [-1]
POL(4295_0_aux_Return(x1, x2, x3)) = x1 + [-1]x3
POL(Cond_4204_0_aux_LT1(x1, x2, x3, x4)) = [-1] + x3 + [-1]x2
POL(&&(x1, x2)) = [-1]
POL(>(x1, x2)) = [-1]
POL(Cond_4204_0_aux_LT2(x1, x2, x3, x4)) = [-1] + x3 + [-1]x2
POL(+(x1, x2)) = x1 + x2
POL(1) = [1]
POL(>=(x1, x2)) = [-1]
POL(4853_0_aux_LE(x1, x2, x3, x4, x5)) = [2] + [2]x1 + x3 + [-1]x2 + [2]x5 + [2]x4
POL(Cond_4204_0_aux_LT3(x1, x2, x3, x4)) = [1] + x3 + [-1]x2
POL(4854_0_aux_LE(x1, x2, x3, x4, x5)) = [-1] + [2]x5 + [2]x4 + x3 + [-1]x2
POL(Cond_4204_0_aux_LT4(x1, x2, x3, x4)) = [-1] + x3 + [-1]x2
POL(Cond_4854_0_aux_LE(x1, x2, x3, x4, x5, x6)) = [-1] + [2]x6 + [2]x5 + x4 + [-1]x3
POL(<(x1, x2)) = [-1]
POL(Cond_4854_0_aux_LE1(x1, x2, x3, x4, x5, x6)) = [2] + [2]x6 + [2]x5 + x4 + [-1]x3
POL(Cond_4853_0_aux_LE(x1, x2, x3, x4, x5, x6)) = [1] + x4 + [-1]x3 + [2]x6 + [2]x5
POL(5704_1_aux_InvokeMethod(x1, x2, x3, x4)) = x2 + [-1]x1 + [-1]x4
POL(5775_0_aux_Return) = 0
POL(6187_2_MAIN_INVOKEMETHOD(x1, x2)) = [-1] + [-1]x2 + [-1]x1
POL(COND_6187_2_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2
POL(-(x1, x2)) = x1 + [-1]x2
POL(COND_6187_2_MAIN_INVOKEMETHOD1(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2
The following pairs are in P
>:
COND_6187_2_MAIN_INVOKEMETHOD(TRUE, 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], x5[1], x1[1], java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1]))) → 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), x4[1], +(x5[1], 1), -(x4[1], +(x5[1], 1)), java.lang.Object(ARRAY(x2[1], x3[1]))), java.lang.Object(ARRAY(x2[1], x3[1])))
COND_6187_2_MAIN_INVOKEMETHOD1(TRUE, 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[3], x3[3], x5[3], java.lang.Object(ARRAY(x0[3], x1[3]))), java.lang.Object(ARRAY(x0[3], x1[3]))) → 6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(6187_0_aux_Load(-(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), x2[3], +(x3[3], 1), -(x2[3], +(x3[3], 1)), java.lang.Object(ARRAY(x6[3], x7[3]))), java.lang.Object(ARRAY(x6[3], x7[3])))
The following pairs are in P
bound:
6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0]))) → COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))
6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2]))) → COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))
The following pairs are in P
≥:
6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0]))) → COND_6187_2_MAIN_INVOKEMETHOD(>(x4[0], +(x5[0], 1)), 6187_1_sort_InvokeMethod(4295_0_aux_Return(0, x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), x4[0], x5[0], x1[0], java.lang.Object(ARRAY(x2[0], x3[0]))), java.lang.Object(ARRAY(x2[0], x3[0])))
6187_2_MAIN_INVOKEMETHOD(6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2]))) → COND_6187_2_MAIN_INVOKEMETHOD1(>(x2[2], +(x3[2], 1)), 6187_1_sort_InvokeMethod(5775_0_aux_Return, x2[2], x3[2], x5[2], java.lang.Object(ARRAY(x0[2], x1[2]))), java.lang.Object(ARRAY(x0[2], x1[2])))
At least the following rules have been oriented under context sensitive arithmetic replacement:
Cond_4204_0_aux_LT(<=(x1, x0), java.lang.Object(ARRAY(x2, x3)), x0, x1)1 → 4204_0_aux_LT(java.lang.Object(ARRAY(x2, x3)), x0, x1)1
4204_0_aux_LT(java.lang.Object(ARRAY(x2, x3)), x0, x1)1 → Cond_4204_0_aux_LT2(&&(&&(&&(&&(>(x2, x0), >(x2, +(x0, 1))), >(x1, x0)), >=(x0, 0)), <=(1, +(x0, 1))), java.lang.Object(ARRAY(x2, x3)), x0, x1)1
4204_0_aux_LT(java.lang.Object(ARRAY(x2, x3)), x0, x1)1 → Cond_4204_0_aux_LT4(&&(&&(&&(>(x2, x0), <=(x2, +(x0, 1))), >(x1, x0)), >=(x0, 0)), java.lang.Object(ARRAY(x2, x3)), x0, x1)1
Cond_4853_0_aux_LE(&&(&&(&&(&&(<(x5, x4), >(x2, x0)), >(x2, +(x0, 1))), >=(x0, 0)), <=(1, +(x0, 1))), x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5)1 → 4854_0_aux_LE(x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5)1
5704_1_aux_InvokeMethod(4295_0_aux_Return(x0, x1, java.lang.Object(ARRAY(x2, x3))), x0, x1, java.lang.Object(ARRAY(x2, x3)))1 → 5775_0_aux_Return1
4854_0_aux_LE(x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5)1 → Cond_4854_0_aux_LE(&&(<(x5, x4), <=(x2, x0)), x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5)1
Cond_4854_0_aux_LE1(&&(&&(&&(<(x5, x4), >(x2, x0)), <=(x2, +(x0, 1))), >=(x0, 0)), x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5)1 → 4854_0_aux_LE(x1, java.lang.Object(ARRAY(x2, x3)), x0, x4, x5)1
(16) Complex Obligation (AND)
(17) Obligation:
IDP problem:
The following function symbols are pre-defined:
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
| ~ | Bwxor: (Integer, Integer) -> Integer |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
The following domains are used:
Integer, Boolean
The ITRS R consists of the following rules:
6187_0_aux_Load(
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
0,
x1)
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5100_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
0),
x6,
x7,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5338_0_aux_ArrayAccess(
x1,
0,
x5,
java.lang.Object(
ARRAY(
x2,
x3)),
x6),
x7,
x8,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5579_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
0),
x6,
x7,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x6,
x7,
x1,
java.lang.Object(
ARRAY(
x4,
x5))),
java.lang.Object(
ARRAY(
x4,
x5))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6068_0_aux_ArrayAccess(
x1,
x5,
0,
java.lang.Object(
ARRAY(
x2,
x3)),
x7),
x8,
x9,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6115_0_aux_ArrayAccess(
x1,
x5,
java.lang.Object(
ARRAY(
x2,
x3)),
0,
x7),
x8,
x9,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6211_0_aux_ArrayAccess(
0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x8,
x9,
x1,
java.lang.Object(
ARRAY(
x6,
x7))),
java.lang.Object(
ARRAY(
x6,
x7))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT(
x1 <= x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT1(
x2 <= x0 && x1 > x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT1(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
5100_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0)
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT2(
x2 > x0 && x2 > x0 + 1 && x1 > x0 && x0 >= 0 && 1 <= x0 + 1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT2(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
4853_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT3(
x2 > x0 && x2 > x0 + 1 && x1 > x0 && x0 >= 0 && 1 <= x0 + 1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT3(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
4854_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT4(
x2 > x0 && x2 <= x0 + 1 && x1 > x0 && x0 >= 0,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT4(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
5338_0_aux_ArrayAccess(
x1,
x0,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x0 + 1)
4854_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
Cond_4854_0_aux_LE(
x5 < x4 && x2 <= x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
Cond_4854_0_aux_LE(
TRUE,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
5579_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0)
4854_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
Cond_4854_0_aux_LE1(
x5 < x4 && x2 > x0 && x2 <= x0 + 1 && x0 >= 0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
Cond_4854_0_aux_LE1(
TRUE,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
6068_0_aux_ArrayAccess(
x1,
x6,
x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x0 + 1)
4853_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
Cond_4853_0_aux_LE(
x5 >= x4 && x0 >= 0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
Cond_4853_0_aux_LE(
TRUE,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
5704_1_aux_InvokeMethod(
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0 + 1,
x1),
x0 + 1,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
4854_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
Cond_4853_0_aux_LE(
x5 < x4 && x2 > x0 && x2 > x0 + 1 && x0 >= 0 && 1 <= x0 + 1,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
5704_1_aux_InvokeMethod(
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5775_0_aux_Return5704_1_aux_InvokeMethod(
5100_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5338_0_aux_ArrayAccess(
x1,
x0,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5579_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5775_0_aux_Return,
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5775_0_aux_Return5704_1_aux_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x1,
java.lang.Object(
ARRAY(
x5,
x6))) →
5778_0_aux_InvokeMethod(
x4,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6068_0_aux_ArrayAccess(
x1,
x4,
x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6115_0_aux_ArrayAccess(
x1,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6211_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x6,
x7))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
The integer pair graph contains the following rules and edges:
(0):
6187_2_MAIN_INVOKEMETHOD(
6187_1_sort_InvokeMethod(
4295_0_aux_Return(
0,
x1[0],
java.lang.Object(
ARRAY(
x2[0],
x3[0]))),
x4[0],
x5[0],
x1[0],
java.lang.Object(
ARRAY(
x2[0],
x3[0]))),
java.lang.Object(
ARRAY(
x2[0],
x3[0]))) →
COND_6187_2_MAIN_INVOKEMETHOD(
x4[0] > x5[0] + 1,
6187_1_sort_InvokeMethod(
4295_0_aux_Return(
0,
x1[0],
java.lang.Object(
ARRAY(
x2[0],
x3[0]))),
x4[0],
x5[0],
x1[0],
java.lang.Object(
ARRAY(
x2[0],
x3[0]))),
java.lang.Object(
ARRAY(
x2[0],
x3[0])))
(2):
6187_2_MAIN_INVOKEMETHOD(
6187_1_sort_InvokeMethod(
5775_0_aux_Return,
x2[2],
x3[2],
x5[2],
java.lang.Object(
ARRAY(
x0[2],
x1[2]))),
java.lang.Object(
ARRAY(
x0[2],
x1[2]))) →
COND_6187_2_MAIN_INVOKEMETHOD1(
x2[2] > x3[2] + 1,
6187_1_sort_InvokeMethod(
5775_0_aux_Return,
x2[2],
x3[2],
x5[2],
java.lang.Object(
ARRAY(
x0[2],
x1[2]))),
java.lang.Object(
ARRAY(
x0[2],
x1[2])))
The set Q consists of the following terms:
6187_0_aux_Load(
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5100_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
0),
x3,
x4,
x0,
java.lang.Object(
ARRAY(
x1,
x2))),
java.lang.Object(
ARRAY(
x1,
x2)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5338_0_aux_ArrayAccess(
x0,
0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4),
x5,
x6,
x0,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5579_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
0),
x3,
x4,
x0,
java.lang.Object(
ARRAY(
x1,
x2))),
java.lang.Object(
ARRAY(
x1,
x2)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x5,
x1,
java.lang.Object(
ARRAY(
x6,
x7))),
java.lang.Object(
ARRAY(
x6,
x7)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6068_0_aux_ArrayAccess(
x0,
x1,
0,
java.lang.Object(
ARRAY(
x2,
x3)),
x4),
x5,
x6,
x0,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6115_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
0,
x4),
x5,
x6,
x0,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6211_0_aux_ArrayAccess(
0,
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4),
x5,
x6,
x0,
java.lang.Object(
ARRAY(
x7,
x8))),
java.lang.Object(
ARRAY(
x7,
x8)))
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT1(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT2(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT3(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT4(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
4854_0_aux_LE(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
Cond_4854_0_aux_LE(
TRUE,
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
Cond_4854_0_aux_LE1(
TRUE,
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
4853_0_aux_LE(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
Cond_4853_0_aux_LE(
TRUE,
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
5704_1_aux_InvokeMethod(
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5100_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3),
x3,
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
5704_1_aux_InvokeMethod(
5338_0_aux_ArrayAccess(
x0,
x1,
x2,
java.lang.Object(
ARRAY(
x3,
x4)),
x5),
x1,
x0,
java.lang.Object(
ARRAY(
x3,
x4)))
5704_1_aux_InvokeMethod(
5579_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3),
x3,
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
5704_1_aux_InvokeMethod(
5775_0_aux_Return,
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x1,
java.lang.Object(
ARRAY(
x5,
x6)))
5704_1_aux_InvokeMethod(
6068_0_aux_ArrayAccess(
x0,
x1,
x2,
java.lang.Object(
ARRAY(
x3,
x4)),
x5),
x2,
x0,
java.lang.Object(
ARRAY(
x3,
x4)))
5704_1_aux_InvokeMethod(
6115_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x4,
x0,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6211_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x6,
x7)))
(18) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes.
(19) TRUE
(20) Obligation:
IDP problem:
The following function symbols are pre-defined:
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
| ~ | Bwxor: (Integer, Integer) -> Integer |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
The following domains are used:
Integer, Boolean
The ITRS R consists of the following rules:
6187_0_aux_Load(
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
0,
x1)
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5100_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
0),
x6,
x7,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5338_0_aux_ArrayAccess(
x1,
0,
x5,
java.lang.Object(
ARRAY(
x2,
x3)),
x6),
x7,
x8,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5579_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
0),
x6,
x7,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x6,
x7,
x1,
java.lang.Object(
ARRAY(
x4,
x5))),
java.lang.Object(
ARRAY(
x4,
x5))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6068_0_aux_ArrayAccess(
x1,
x5,
0,
java.lang.Object(
ARRAY(
x2,
x3)),
x7),
x8,
x9,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6115_0_aux_ArrayAccess(
x1,
x5,
java.lang.Object(
ARRAY(
x2,
x3)),
0,
x7),
x8,
x9,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6211_0_aux_ArrayAccess(
0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x8,
x9,
x1,
java.lang.Object(
ARRAY(
x6,
x7))),
java.lang.Object(
ARRAY(
x6,
x7))) →
6255_0_main_InvokeMethod(
java.lang.Object(
ARRAY(
x2,
x3)))
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT(
x1 <= x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT1(
x2 <= x0 && x1 > x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT1(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
5100_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0)
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT2(
x2 > x0 && x2 > x0 + 1 && x1 > x0 && x0 >= 0 && 1 <= x0 + 1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT2(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
4853_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT3(
x2 > x0 && x2 > x0 + 1 && x1 > x0 && x0 >= 0 && 1 <= x0 + 1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT3(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
4854_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
Cond_4204_0_aux_LT4(
x2 > x0 && x2 <= x0 + 1 && x1 > x0 && x0 >= 0,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1)
Cond_4204_0_aux_LT4(
TRUE,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x1) →
5338_0_aux_ArrayAccess(
x1,
x0,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x0 + 1)
4854_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
Cond_4854_0_aux_LE(
x5 < x4 && x2 <= x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
Cond_4854_0_aux_LE(
TRUE,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
5579_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0)
4854_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
Cond_4854_0_aux_LE1(
x5 < x4 && x2 > x0 && x2 <= x0 + 1 && x0 >= 0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
Cond_4854_0_aux_LE1(
TRUE,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
6068_0_aux_ArrayAccess(
x1,
x6,
x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x0 + 1)
4853_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
Cond_4853_0_aux_LE(
x5 >= x4 && x0 >= 0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
Cond_4853_0_aux_LE(
TRUE,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
5704_1_aux_InvokeMethod(
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x2,
x3)),
x0 + 1,
x1),
x0 + 1,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
4854_0_aux_LE(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5) →
Cond_4853_0_aux_LE(
x5 < x4 && x2 > x0 && x2 > x0 + 1 && x0 >= 0 && 1 <= x0 + 1,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x4,
x5)
5704_1_aux_InvokeMethod(
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5775_0_aux_Return5704_1_aux_InvokeMethod(
5100_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5338_0_aux_ArrayAccess(
x1,
x0,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5579_0_aux_ArrayAccess(
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x0),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5775_0_aux_Return,
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5775_0_aux_Return5704_1_aux_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x1,
java.lang.Object(
ARRAY(
x5,
x6))) →
5778_0_aux_InvokeMethod(
x4,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6068_0_aux_ArrayAccess(
x1,
x4,
x0,
java.lang.Object(
ARRAY(
x2,
x3)),
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6115_0_aux_ArrayAccess(
x1,
x4,
java.lang.Object(
ARRAY(
x2,
x3)),
x0,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6211_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x6,
x7))) →
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
The integer pair graph contains the following rules and edges:
(1):
COND_6187_2_MAIN_INVOKEMETHOD(
TRUE,
6187_1_sort_InvokeMethod(
4295_0_aux_Return(
0,
x1[1],
java.lang.Object(
ARRAY(
x2[1],
x3[1]))),
x4[1],
x5[1],
x1[1],
java.lang.Object(
ARRAY(
x2[1],
x3[1]))),
java.lang.Object(
ARRAY(
x2[1],
x3[1]))) →
6187_2_MAIN_INVOKEMETHOD(
6187_1_sort_InvokeMethod(
6187_0_aux_Load(
x4[1] - x5[1] + 1,
java.lang.Object(
ARRAY(
x2[1],
x3[1]))),
x4[1],
x5[1] + 1,
x4[1] - x5[1] + 1,
java.lang.Object(
ARRAY(
x2[1],
x3[1]))),
java.lang.Object(
ARRAY(
x2[1],
x3[1])))
(3):
COND_6187_2_MAIN_INVOKEMETHOD1(
TRUE,
6187_1_sort_InvokeMethod(
5775_0_aux_Return,
x2[3],
x3[3],
x5[3],
java.lang.Object(
ARRAY(
x0[3],
x1[3]))),
java.lang.Object(
ARRAY(
x0[3],
x1[3]))) →
6187_2_MAIN_INVOKEMETHOD(
6187_1_sort_InvokeMethod(
6187_0_aux_Load(
x2[3] - x3[3] + 1,
java.lang.Object(
ARRAY(
x6[3],
x7[3]))),
x2[3],
x3[3] + 1,
x2[3] - x3[3] + 1,
java.lang.Object(
ARRAY(
x6[3],
x7[3]))),
java.lang.Object(
ARRAY(
x6[3],
x7[3])))
The set Q consists of the following terms:
6187_0_aux_Load(
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5100_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
0),
x3,
x4,
x0,
java.lang.Object(
ARRAY(
x1,
x2))),
java.lang.Object(
ARRAY(
x1,
x2)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5338_0_aux_ArrayAccess(
x0,
0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4),
x5,
x6,
x0,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5579_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
0),
x3,
x4,
x0,
java.lang.Object(
ARRAY(
x1,
x2))),
java.lang.Object(
ARRAY(
x1,
x2)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x5,
x1,
java.lang.Object(
ARRAY(
x6,
x7))),
java.lang.Object(
ARRAY(
x6,
x7)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6068_0_aux_ArrayAccess(
x0,
x1,
0,
java.lang.Object(
ARRAY(
x2,
x3)),
x4),
x5,
x6,
x0,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6115_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
0,
x4),
x5,
x6,
x0,
java.lang.Object(
ARRAY(
x2,
x3))),
java.lang.Object(
ARRAY(
x2,
x3)))
6187_2_main_InvokeMethod(
6187_1_sort_InvokeMethod(
6211_0_aux_ArrayAccess(
0,
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4),
x5,
x6,
x0,
java.lang.Object(
ARRAY(
x7,
x8))),
java.lang.Object(
ARRAY(
x7,
x8)))
4204_0_aux_LT(
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT1(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT2(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT3(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
Cond_4204_0_aux_LT4(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2,
x3)
4854_0_aux_LE(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
Cond_4854_0_aux_LE(
TRUE,
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
Cond_4854_0_aux_LE1(
TRUE,
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
4853_0_aux_LE(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
Cond_4853_0_aux_LE(
TRUE,
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3,
x4,
x5)
5704_1_aux_InvokeMethod(
4295_0_aux_Return(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5100_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3),
x3,
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
5704_1_aux_InvokeMethod(
5338_0_aux_ArrayAccess(
x0,
x1,
x2,
java.lang.Object(
ARRAY(
x3,
x4)),
x5),
x1,
x0,
java.lang.Object(
ARRAY(
x3,
x4)))
5704_1_aux_InvokeMethod(
5579_0_aux_ArrayAccess(
x0,
java.lang.Object(
ARRAY(
x1,
x2)),
x3),
x3,
x0,
java.lang.Object(
ARRAY(
x1,
x2)))
5704_1_aux_InvokeMethod(
5775_0_aux_Return,
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
5778_0_aux_InvokeMethod(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3))),
x4,
x1,
java.lang.Object(
ARRAY(
x5,
x6)))
5704_1_aux_InvokeMethod(
6068_0_aux_ArrayAccess(
x0,
x1,
x2,
java.lang.Object(
ARRAY(
x3,
x4)),
x5),
x2,
x0,
java.lang.Object(
ARRAY(
x3,
x4)))
5704_1_aux_InvokeMethod(
6115_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x4,
x0,
java.lang.Object(
ARRAY(
x2,
x3)))
5704_1_aux_InvokeMethod(
6211_0_aux_ArrayAccess(
x0,
x1,
java.lang.Object(
ARRAY(
x2,
x3)),
x4,
x5),
x0,
x1,
java.lang.Object(
ARRAY(
x6,
x7)))
(21) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes.
(22) TRUE
(23) Obligation:
IDP problem:
The following function symbols are pre-defined:
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
| ~ | Bwxor: (Integer, Integer) -> Integer |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
The following domains are used:
Boolean, Integer
R is empty.
The integer pair graph contains the following rules and edges:
(0):
2614_0_MAIN_LOAD(
java.lang.Object(
ARRAY(
x0[0],
x1[0])),
x2[0]) →
COND_2614_0_MAIN_LOAD(
x2[0] >= 0 && x2[0] < x0[0],
java.lang.Object(
ARRAY(
x0[0],
x1[0])),
x2[0])
(1):
COND_2614_0_MAIN_LOAD(
TRUE,
java.lang.Object(
ARRAY(
x0[1],
x1[1])),
x2[1]) →
2614_0_MAIN_LOAD(
java.lang.Object(
ARRAY(
x0[1],
x1[1])),
x2[1] + 1)
(0) -> (1), if ((x2[0] >= 0 && x2[0] < x0[0] →* TRUE)∧(java.lang.Object(ARRAY(x0[0], x1[0])) →* java.lang.Object(ARRAY(x0[1], x1[1])))∧(x2[0] →* x2[1]))
(1) -> (0), if ((java.lang.Object(ARRAY(x0[1], x1[1])) →* java.lang.Object(ARRAY(x0[0], x1[0])))∧(x2[1] + 1 →* x2[0]))
The set Q is empty.
(24) IDPNonInfProof (SOUND transformation)
The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that
final constraints are written in
bold face.
For Pair
2614_0_MAIN_LOAD(
java.lang.Object(
ARRAY(
x0,
x1)),
x2) →
COND_2614_0_MAIN_LOAD(
&&(
>=(
x2,
0),
<(
x2,
x0)),
java.lang.Object(
ARRAY(
x0,
x1)),
x2) the following chains were created:
- We consider the chain 2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]) → COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), COND_2614_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]) → 2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[1], x1[1])), +(x2[1], 1)) which results in the following constraint:
(1) (&&(>=(x2[0], 0), <(x2[0], x0[0]))=TRUE∧java.lang.Object(ARRAY(x0[0], x1[0]))=java.lang.Object(ARRAY(x0[1], x1[1]))∧x2[0]=x2[1] ⇒ 2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])≥NonInfC∧2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])≥COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])∧(UIncreasing(COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])), ≥))
We simplified constraint (1) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:
(2) (>=(x2[0], 0)=TRUE∧<(x2[0], x0[0])=TRUE ⇒ 2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])≥NonInfC∧2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])≥COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])∧(UIncreasing(COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])), ≥))
We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(3) (x2[0] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])), ≥)∧[(-1)bni_11 + (-1)Bound*bni_11] + [(-1)bni_11]x2[0] + [bni_11]x0[0] ≥ 0∧[(-1)bso_12] ≥ 0)
We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(4) (x2[0] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])), ≥)∧[(-1)bni_11 + (-1)Bound*bni_11] + [(-1)bni_11]x2[0] + [bni_11]x0[0] ≥ 0∧[(-1)bso_12] ≥ 0)
We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(5) (x2[0] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])), ≥)∧[(-1)bni_11 + (-1)Bound*bni_11] + [(-1)bni_11]x2[0] + [bni_11]x0[0] ≥ 0∧[(-1)bso_12] ≥ 0)
We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(6) (x2[0] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])), ≥)∧0 = 0∧[(-1)bni_11 + (-1)Bound*bni_11] + [(-1)bni_11]x2[0] + [bni_11]x0[0] ≥ 0∧0 = 0∧[(-1)bso_12] ≥ 0)
We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:
(7) (x2[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])), ≥)∧0 = 0∧[(-1)Bound*bni_11] + [bni_11]x0[0] ≥ 0∧0 = 0∧[(-1)bso_12] ≥ 0)
For Pair
COND_2614_0_MAIN_LOAD(
TRUE,
java.lang.Object(
ARRAY(
x0,
x1)),
x2) →
2614_0_MAIN_LOAD(
java.lang.Object(
ARRAY(
x0,
x1)),
+(
x2,
1)) the following chains were created:
- We consider the chain COND_2614_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]) → 2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[1], x1[1])), +(x2[1], 1)) which results in the following constraint:
(8) (COND_2614_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1], x1[1])), x2[1])≥NonInfC∧COND_2614_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1], x1[1])), x2[1])≥2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[1], x1[1])), +(x2[1], 1))∧(UIncreasing(2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[1], x1[1])), +(x2[1], 1))), ≥))
We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint:
(9) ((UIncreasing(2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[1], x1[1])), +(x2[1], 1))), ≥)∧[1 + (-1)bso_14] ≥ 0)
We simplified constraint (9) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:
(10) ((UIncreasing(2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[1], x1[1])), +(x2[1], 1))), ≥)∧[1 + (-1)bso_14] ≥ 0)
We simplified constraint (10) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:
(11) ((UIncreasing(2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[1], x1[1])), +(x2[1], 1))), ≥)∧[1 + (-1)bso_14] ≥ 0)
We simplified constraint (11) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:
(12) ((UIncreasing(2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[1], x1[1])), +(x2[1], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)
To summarize, we get the following constraints P
≥ for the following pairs.
- 2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0, x1)), x2) → COND_2614_0_MAIN_LOAD(&&(>=(x2, 0), <(x2, x0)), java.lang.Object(ARRAY(x0, x1)), x2)
- (x2[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])), ≥)∧0 = 0∧[(-1)Bound*bni_11] + [bni_11]x0[0] ≥ 0∧0 = 0∧[(-1)bso_12] ≥ 0)
- COND_2614_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0, x1)), x2) → 2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0, x1)), +(x2, 1))
- ((UIncreasing(2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[1], x1[1])), +(x2[1], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)
The constraints for P
> respective P
bound are constructed from P
≥ where we just replace every occurence of "t ≥ s" in P
≥ by "t > s" respective "t ≥
c". Here
c stands for the fresh constant used for P
bound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:
POL(TRUE) = 0
POL(FALSE) = 0
POL(2614_0_MAIN_LOAD(x1, x2)) = [-1] + [-1]x2 + [-1]x1
POL(java.lang.Object(x1)) = x1
POL(ARRAY(x1, x2)) = [-1]x1
POL(COND_2614_0_MAIN_LOAD(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2
POL(&&(x1, x2)) = [-1]
POL(>=(x1, x2)) = [-1]
POL(0) = 0
POL(<(x1, x2)) = [-1]
POL(+(x1, x2)) = x1 + x2
POL(1) = [1]
The following pairs are in P
>:
COND_2614_0_MAIN_LOAD(TRUE, java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]) → 2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[1], x1[1])), +(x2[1], 1))
The following pairs are in P
bound:
2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]) → COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])
The following pairs are in P
≥:
2614_0_MAIN_LOAD(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]) → COND_2614_0_MAIN_LOAD(&&(>=(x2[0], 0), <(x2[0], x0[0])), java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])
There are no usable rules.
(25) Complex Obligation (AND)
(26) Obligation:
IDP problem:
The following function symbols are pre-defined:
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
| ~ | Bwxor: (Integer, Integer) -> Integer |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
The following domains are used:
Boolean, Integer
R is empty.
The integer pair graph contains the following rules and edges:
(0):
2614_0_MAIN_LOAD(
java.lang.Object(
ARRAY(
x0[0],
x1[0])),
x2[0]) →
COND_2614_0_MAIN_LOAD(
x2[0] >= 0 && x2[0] < x0[0],
java.lang.Object(
ARRAY(
x0[0],
x1[0])),
x2[0])
The set Q is empty.
(27) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(28) TRUE
(29) Obligation:
IDP problem:
The following function symbols are pre-defined:
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
| ~ | Bwxor: (Integer, Integer) -> Integer |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
The following domains are used:
Integer
R is empty.
The integer pair graph contains the following rules and edges:
(1):
COND_2614_0_MAIN_LOAD(
TRUE,
java.lang.Object(
ARRAY(
x0[1],
x1[1])),
x2[1]) →
2614_0_MAIN_LOAD(
java.lang.Object(
ARRAY(
x0[1],
x1[1])),
x2[1] + 1)
The set Q is empty.
(30) IDependencyGraphProof (EQUIVALENT transformation)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.
(31) TRUE